QWidget获取大小不对

fengfenglin1000 2016-04-05 05:04:03
各位,我新建了一个QDialog对象,然后进行界面初始化,但获得的窗口大小一直是(100,30),请问这是为什么?
下面是相关代码。谢谢指教!

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QTextCodec* codec = QTextCodec::codecForLocale();
QDialog* widget = new QDialog(this);
QHBoxLayout* layout = new QHBoxLayout(widget);
QLabel *label = new QLabel(codec->toUnicode("次数:"), widget);
QSpinBox* edit = new QSpinBox(widget);
QPushButton* btn_ok = new QPushButton(codec->toUnicode("确定"));
connect(btn_ok, SIGNAL(clicked()), widget, SLOT(accept()));
edit->setRange(0, 10);
layout->addWidget(label);
layout->addWidget(edit);
layout->addWidget(btn_ok);
widget->setWindowFlags(Qt::Popup);
widget->setLayout(layout);
edit->setFocus();
printf("widget size=(%d,%d)\n", widget->width(), widget->height());
widget->exec();
}
...全文
938 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengfenglin1000 2016-04-07
  • 打赏
  • 举报
回复
原来,获得控件的大小要在show后才能得到正确的尺寸。
冷静忍耐 2016-04-06
  • 打赏
  • 举报
回复
不能在构造函数里获取控件尺寸,这时还没初始化好
东莞某某某 2016-04-06
  • 打赏
  • 举报
回复
这些属性是实时的,你在构造函数中获取的值是当时的,你可以在resizeEvent()中获取最新的值
fengfenglin1000 2016-04-06
  • 打赏
  • 举报
回复
引用 1 楼 qq423399099 的回复:
不能用setgeometry?
使用此函数可以设计窗口的大小,但我的窗口大小是根据窗口中的控件大小确定的
小灸舞 2016-04-05
  • 打赏
  • 举报
回复
不能用setgeometry?

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧