作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 qt 并创建了一个菜单栏,如"file",其中包含一些子菜单项“打开”、“保存”、“另存为”、“关闭”、“退出”。我还创建了诸如“actionNew”、“actionOpen”等 Action 。我对工具栏使用了相同的操作,并使用“disableItems()”函数将菜单和工具栏项禁用到构造函数中,效果很好,工具栏和菜单项显示为灰色。如果我单击子菜单项“新建”,工具栏和菜单项将启用并且不会变灰,这也可以正常工作,但是如果我单击子菜单项“关闭”,则只有工具栏项变灰并且菜单项项目仍然启用 :(。我该如何修复它?希望你能帮助我,抱歉我的英语不好 ;)
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();
}
最佳答案
我遇到了同样的问题。
我很困惑,因为代码的行为不同于 Linux 64(我通常开发的地方)、Windows(客户机器)、Linux 32(旧的开发和备份机器)。然后我意识到版本的差异。
我找到的唯一解决方法是从我的 Ubuntu 发行版附带的默认 QtSDK 升级到最新下载的 from here .
建议检查一下您使用的版本是否可以升级。
HTH
编辑 我注意到他们改变了一些更激进的东西:升级后,菜单栏不再在“顶部屏幕”上共享,而是更传统地在“主窗口”内共享。可能团队忽略了可移植性问题,考虑到他们的广泛目标,这是合理的。
关于c++ - 如何在 Qt 中再次使菜单项变灰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769087/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!