方法一:通过 Qt Designer 布局,此方法简单,适合Qt designer 中自带的可视的控件。
方法二:把控件的parent设置为该窗口,并使用 setGeometry() 函数设定位置。此方法适合面广,特别是针对自定义控件,如自定义按钮
void showMenuBtnWidget::setupmenu()
{
QDialog *dlg = new QDialog;
setupmenuUI.setupUi(dlg);
ButtonNoTextWidget *button = new ButtonNoTextWidget("://manu_diskmage.png", false, dlg);
button->setGeometry(60, 70, 72, 72);
dlg->exec();
}
注意:在调用 setLayout() 函数,会改变控件位置,因此,像下面这种,就是错误的!
void showMenuBtnWidget::setupmenu()
{
QDialog *dlg = new QDialog;
setupmenuUI.setupUi(dlg);
ButtonNoTextWidget *button = new ButtonNoTextWidget("://manu_diskmage.png");//不指定父窗口,我的控件默认是 parent = 0
button->setGeometry(60, 70, 72, 72);
QHBoxLayout *layout = new QHBoxLayout(dlg);
layout->addWidget(button);
dlg->setLayout(layout);
dlg->exec();
}
setLayout() 会覆盖 setGeometry() 设置的位置!