我正在開發一個使用Qt4的項目,我遇到了一個小問題。 我從主窗口創建模態窗口。我希望這可以禁用頂部的工具欄。 我有一個菜單項,從菜單中產生模式。我想要的是,當模式產生的菜單被禁用。我曾嘗試使用setEnabled(false)函數,但不重置它。QT模式窗口和禁用父母工具欄
下面是代碼:
void Main_Screen::Create_ViPro()
{
std::auto_ptr<ViPro_Dialog> modal(new ViPro_Dialog(this));
modal->show();
modal->exec();
}
所以這僅僅是在選擇菜單項時觸發一個簡單的類。我覺得這個問題源於這樣一個事實,即我將父窗口設置爲主窗口,但是我不知道如何在沒有父窗口的情況下創建窗體(這樣做沒有意義)。有沒有辦法從孩子禁用家長工具欄?我迄今爲止唯一看到的是_fileMenu-> setEnabled(false); 只要我沒有創建模式,這種方法就可以工作,但只要產生了這個模式,菜單就會再次運行。我完全迷失了。 在此先感謝
編輯,帕特里斯
這裏是構造
Main_Screen::Main_Screen(QWidget* parent /*= NULL*/)
: QMainWindow(parent),
_newProj(new QAction(tr("New &ViPro"), this)),
_fileMenu(menuBar()->addMenu(tr("&File")))
{
//create slot for creating a new project
connect(_newProj.get(), SIGNAL(triggered()), this, SLOT(Create_ViPro()));
_fileMenu->addAction(_newProj.get());
//if i do this then setEnabled(false) works perfectly and i can't access the menu
Create_ViPro()
}
所以該功能通過觸發newproject動作信號。如果我直接從構造函數中調用該函數,則會按照您所說的patrice禁用它,但是,如果我通過觸發器調用函數,則不會禁用它。我處理信號/插槽機制錯了嗎?再次感謝。
另一個例子,如果我做的函數create_vipro(),如下
void Main_Screen::Create_ViPro()
{
_fileMenu->setEnabled(false);
}
當我觸發事件的文件菜單沒有被禁用,所以它必須有無關的模式本身,而是而是如何處理信號。
從哪個QT類是'Main_Screen'和'ViPro_Dialog'派生的? – bjhend 2012-04-17 00:47:31
Main_Screen派生自QMainWindow,而ViPro_Dialog派生自QDialog – Bear 2012-04-17 16:58:12