我正在使用 Qt4 开发一个项目,但遇到了一个小问题。我正在从主窗口创建一个模式窗口。我希望这可以禁用顶部的工具栏。我有一个从菜单中生成模式的菜单项。我想要的是,当生成模式时,菜单被禁用。我曾尝试使用 setEnabled(false) 函数,但这并没有重置它。
这是代码:
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 动作来发出信号。如果我直接从构造函数中调用该函数,它会像您所说的那样禁用它,但是,如果我通过触发器调用了该函数,它不会禁用它。我处理信号/槽机制错了吗?再次感谢。
另一个例子,如果我创建函数 create_vipro() 如下
void Main_Screen::Create_ViPro()
{
_fileMenu->setEnabled(false);
}
当我触发事件时,文件菜单没有被禁用,所以它必须与模态本身无关,而是如何处理信号。