如何在Qt中再次灰显菜单项

时间:2012-10-07 13:04:55

标签: c++ linux qt menu menuitem

我正在使用qt并创建了一个菜单栏,如" File"使用一些子菜单项"打开","保存"," SaveAs","关闭","退出"。我还创建了像" actionNew"," actionOpen",...等等的动作。我对工具栏使用了相同的操作,并使用" disableItems()"禁用菜单和工具栏项到构造函数中。功能,工作正常,工具栏和菜单项灰显。如果我单击子菜单项" New",工具栏和菜单项已启用而不是灰色,这也可以正常工作,但如果我点击子菜单项"关闭"只有工具栏项目变灰并且菜单项仍然启用:(。我该如何解决?希望你可以帮助我,抱歉我的英语不好;)

MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent), ui(new Ui::MainWindow)
{
  ui->setupUi(this);
  /* disable menu items and tool bar items */
  disableItems();
}
void MainWindow::disableItems()
{
  ui->actionSave->setEnabled(false);
  ui->actionSaveAs->setEnabled(false);
  ui->actionClose->setEnabled(false);
}
void MainWindow::enableItems()
{
  ui->actionSave->setEnabled(true);
  ui->actionSaveAs->setEnabled(true);
  ui->actionClose->setEnabled(true);
}
void MainWindow::on_actionNew_triggered()
{
  enableItems();
}
void MainWindow::on_actionClose_triggered()
{
  disableItems();
}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

我很困惑,因为代码的行为与Linux 64(通常我开发的地方),Windows(客户机器),Linux 32(旧开发和备份机器)不同。然后我意识到了版本的差异。

解决的唯一解决方法是从我的Ubuntu发行版附带的默认QtSDK升级到最新下载的from here

我建议您检查您使用的版本是否可以升级。

HTH

编辑我注意到他们改变了一些更激进的东西:在升级之后,菜单栏不再在“顶部屏幕”上共享,而是更传统地在“主窗口”内部。可能该团队忽略了一个可移植性问题,考虑到他们的广泛目标,这是合理的。