2
我正在使用Qt for Symbian。我從QMenu打開QDialog時遇到了一些問題。 QDialog顯示正常,並在QDialog中我有一個QDialogButtonBox用一個按鈕來關閉QDialog。但是如果我關閉QDialog,然後再次從QMenu中打開它,它會顯示出來,但QDialogButtonBox中的按鈕不會顯示出來。相反,QMainWindow中的按鈕將顯示,但它們會灰顯。Qt QDialog的問題
如何獲取每次顯示的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());
}
我沒有Symbian的使用權限,但過去我遇到過對話方面的問題。我會嘗試的一件事是將TestDialog的構造函數更改爲「TestDialog * test = new TestDialog();」請注意構造函數調用中沒有父對象。 通常情況下,如果我想限制主窗口框架內的對話框,我會這樣做。但在Symbian上,我並不認爲這是一個問題。我不會發布這個答案,因爲我無法嘗試。 – 2010-04-21 00:42:15
我習慣於在對話框中調用exec,當我希望它們彈出並互動時。節目應該可以工作,但exec可能值得去嘗試。 – 0xbaadf00d 2011-04-07 09:03:13