Как снова выделить серый пункт меню в Qt

Я работаю с qt и создал строку меню типа «Файл» с некоторыми пунктами подменю «Открыть», «Сохранить», «Сохранить как», «Закрыть», «Выйти». Я также создал такие действия, как «actionNew», «actionOpen», … и так далее. Я использовал те же действия для панели инструментов и отключил элементы меню и панели инструментов в конструкторе с помощью функции «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();
}

2

Решение

У меня такая же проблема.

Я был озадачен, потому что код вел себя не так, как в Linux 64 (где я обычно разрабатываю), Windows (клиентская машина), Linux 32 (старая разработка & резервная машина). Тогда я понял разницу в версии.

Единственный найденный способ решить проблему — это обновить QtSDK по умолчанию, поставляемый с моим дистрибутивом Ubuntu, до последней загруженной версии. отсюда.

Я предлагаю проверить, можно ли обновить версию, которую вы используете.

НТН

редактировать Я заметил, что они изменили что-то более радикальное: после обновления меню не отображается больше на «главном экране», а более традиционно в «главном окне». Вероятно, команда упустила из виду проблему переносимости, это разумно, учитывая их широкую цель.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]