Qt的不是让我创造我的琴弦“关于”,“首选项”或\“退出?任何提示的应用程序命名的菜单项?(Qt n

2019-09-18 05:31发布

所以基本上我要创建使用PySide和Qt框架的GUI应用程序。 我使用的QT设计师进行初始UI设计。 该应用程序的第一个版本将运行在Mac上,我希望它像其他Mac应用程序,其中应用程序的名称为黑体一路向左与“关于”,“首选项”和“退出” 。

问题是,每当我添加这些类型的字符串的下拉停止工作。

在这个任何提示将是有益的,这是使用PySide,Qt框架,以及d Qt设计我的第一个GUI。

Answer 1:

以下是得到的一个例子About在C ++中的菜单项在Mac上正常工作。 关键是要setMenuRole正确的角色。 有对退出,关于,偏好和关于Qt的角色。 在大胆与应用程序的名称的菜单项是由OS提供的,你不需要做什么特别的获取。 Qt的将自动移动与他们属于正确的角色项。 你不需要做任何事情来获得退出菜单项,它会自动添加,如果你不提供一个。

如果你在Qt设计制作菜单,您只需设置menuRole这些菜单QActions的财产。 这是所有的需要的菜单去纠正的地方。 不要用你的应用程序的名称添加菜单。 只需创建常用的Windows风格的菜单(文件,编辑,帮助),以及项目将被重新安排合适他们的作用。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    a.setApplicationVersion(...);
    a.setOrganizationName(...);
    a.setOrganizationDomain(...);
    a.setApplicationName(...);

    MainWidget w; // MainWidget is your widget class

    QMessageBox * aboutBox = new QMessageBox(&w);
    QImage img(":/images/youricon.png");
    aboutBox->setIconPixmap(QPixmap::fromImage(
        img.scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)));
    QString txt;
    txt = txt.fromUtf8(
            "fooapp %1\nCopyright \xC2\xA9 2012 Ed Hedges\n"
            "Licensed under the terms of ....");
    txt = txt.arg(a.applicationVersion());
    aboutBox->setText(txt);

    QMenuBar menu;
    QMenu * submenu = menu.addMenu("Help");
    QAction * about = submenu->addAction("About", aboutBox, SLOT(exec()));
    about->setMenuRole(QAction::AboutRole);

    w.show();

    return a.exec();
} 


Answer 2:

我不知道关于Python; 但在Mac上创建公司,偏好或者退出菜单项和Qt会自动将这些转移到左侧(在一个用粗体字)的应用程序菜单。

我猜你想创建自己的应用程序菜单和Qt是越来越糊涂了。 你不需要创建它。 把你的公司,首或在文件或其他一些菜单标题退出菜单项,他们将得到转移。



文章来源: Qt not letting me create a menu item named after my app with the strings “About”, “Preferences”, or \"Quit? Any tips?