带有菜单栏的 QT HTML5 像真正的程序

Posted

技术标签:

【中文标题】带有菜单栏的 QT HTML5 像真正的程序【英文标题】:QT HTML5 with Menu Bar like real program 【发布时间】:2014-07-28 13:15:05 【问题描述】:

我正在开发一个 QT html5 应用程序,我想知道如何像普通程序一样添加顶部菜单(使用默认的 file, tools, help... 选项)。

我认为我必须更改 html5applicationviewer.cpp 中的某些内容,但我对此知之甚少(我正在学习这个...)

即使你能给我指出正确的方向,我也很感激。我四处搜索,但没有找到关于这个主题的任何内容(但也许我没有搜索正确......)

如果您需要更多信息,请询问。

【问题讨论】:

如果你愿意,你必须使用 html/css/jquery 来制作一个,我会尝试制作一个示例 @Youness,不需要这个例子。我以前开发过几个网站,所以我知道该怎么做。但我希望有可能创建一个“程序”菜单.... 【参考方案1】:

将普通“桌面”样式菜单添加到 Qt 应用程序的最简单方法是使用 QMainWindow,它具有 good support for menus。

这里有一些东西可以帮助您入门。首先,我使用 Qt Creator(SDK 版本 5.2.1)创建了默认的 HTML5 Qt 应用程序。然后我编辑了 main.cpp 并添加了一些行。结果如下,原始行没有注释,所有添加的行都带有注释。

#include <QApplication>

#include <QMainWindow> // added
#include <QMenuBar> // added
#include <QMenu> // added
#include <QAction> // added

#include "html5applicationviewer.h"

int main(int argc, char *argv[])

    QApplication app(argc, argv);

    QMainWindow w; // important, viewer is in stack so w must be before it!

    Html5ApplicationViewer viewer;

    w.setCentralWidget(&viewer); // set viewer as the central widget
    QMenu *fileMenu = w.menuBar()->addMenu("&File"); // create file menu
    QAction *exitAction = fileMenu->addAction("&Exit"); // create exit action
    QObject::connect(exitAction, SIGNAL(triggered()), qApp, SLOT(quit())); // make the action do something

    viewer.setOrientation(Html5ApplicationViewer::ScreenOrientationAuto);
    //viewer.showExpanded(); // will be shown by main window
    viewer.loadFile(QLatin1String("html/index.html"));

    w.show(); // show main window

    return app.exec();

【讨论】:

非常感谢!那确实是我正在寻找的... 1个问题。为什么在fileMenu and exitAction 之前使用星号*? (我也会谷歌你为什么使用它。但也许你的解释会帮助我理解在这种特殊情况下的选择...... @Mathlight * 表示指针。 QObjects 几乎总是通过指针使用,将它们作为纯值变量(如 wviewer 这里)是不寻常的。您可能应该花一些时间学习 C++ 基础知识... :-) 我确实需要更多时间来学习基础知识 :D 但是感谢您为我指出这一点!

以上是关于带有菜单栏的 QT HTML5 像真正的程序的主要内容,如果未能解决你的问题,请参考以下文章

Qt:Mac 菜单栏的怪异之处

带有标签栏的左侧菜单?

Qt菜单栏和标题栏怎么合一?

qt去掉标题栏的窗口,最小化到任务栏后,怎么没有系统菜单?

带有多个菜单栏的 Win32 中的 Windows 应用程序?

没有下拉菜单的 Qt 菜单栏(单级菜单栏)