Qt中QDialog的问题

时间:2010-04-20 08:28:18

标签: qt qdialog

我正在使用Qt for Symbian。我从QMenu打开的QDialog有一些问题。 QDialog显示正常,在QDialog中我有一个QDialogBu​​ttonBox,带有一个关闭QDialog的按钮。但是,如果我关闭QDialog然后再次从QMenu打开它,它将显示但是QDialogBu​​ttonBox中的按钮不会显示。相反,QMainWindow的按钮会显示,但它们会变灰。

我怎样才能每次都显示QDialog按钮?也许我在关注QDialog时遇到了一些问题?我真的看不出我在这里做错了什么。

我使用的代码不多,你可以自己试试。这是我的代码:

在QMainWindow中,我使用以下命令创建菜单:

QAction *menuButton = new QAction("Menu", this);
menuButton->setSoftKeyRole(QAction::PositiveSoftKey);

QMenu *menu = new QMenu(this);
menuButton->setMenu(menu);

QAction *popup = new QAction("Show popup",this);
connect(popup, SIGNAL(triggered()), this, SLOT(showPopup()));
menu->addAction(popup);

addAction(menuButton);

这显示了QDialog:

void MyMainWindow::showPopup(){
TestDialog *test = new TestDialog(this);
test->setAttribute(Qt::WA_DeleteOnClose);
test->show();
}

这是TestDialog:

TestDialog::TestDialog(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
QDesktopWidget* desktopWidget = QApplication::desktop();
QRect rect = desktopWidget->availableGeometry();
this->setFixedWidth(rect.width());
}

1 个答案:

答案 0 :(得分:0)

如果您希望对话框是模态的,请使用exec()。否则,你应该使用show()和raise()来使它成为最重要的。