gpt4 book ai didi

c++ - 如何将菜单栏添加到窗口框架中? [使用 C++ 的 QT]

转载 作者:行者123 更新时间:2023-11-30 01:20:39 25 4
gpt4 key购买 nike

我是 C++ 的初学者,我开始学习如何通过 MVS IDE 中的代码使用 QT 组件。我仍然不知道这是否是开始的最佳选择,但由于我是一名 Java 程序员,所以我选择了使用 Java(Swing 组件)创建的路径。所以,我的问题是,如何传达我的两类代码,因为在一个类中我制作了窗口框架,而在另一个类中我制作了菜单栏?

在 java 中我会做这样的事情:

JFrame frame = new JFrame();
JMenu menu = new JMenu();

frame.add(menu);

无论如何,这是我的代码:

#include "Header.h"

class MainWindow{

private:

QWidget *widget;

public:

void buildWindow(QApplication& app){

widget = app.desktop();
QMainWindow *main_window = new QMainWindow();
QWidget *mainWid = new QWidget(main_window);
MyMenuBar myMenuBar(mainWid);
main_window->setWindowState(mainWid->windowState() | Qt::WindowMaximized);
main_window->setWindowTitle("QT Trainning");
main_window->show();
}

};

class MyMenuBar:QMainWindow {

public:

MyMenuBar(QWidget* mainWid){

QAction *quit = new QAction("&Quit", this);

QMenuBar *menu = new QMenuBar(mainWid);
QMenu *file;

menu->addMenu(file);
file = menuBar()->addMenu("&File");
file->addAction(quit);

connect(quit, SIGNAL(triggered()), qApp, SLOT(quit()));
}

};

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

MainWindow frame;

frame.buildWindow(app);

return app.exec();
}

我尝试在 Window 类中创建 MenuBar 的实例,但没有太大帮助,老实说,我发现的大多数与 QT 界面打交道的 Material 都假定您使用的是 QT GUI...任何提示关于如何解决问题或者我真正应该做些什么来练习C++??

提前致谢

最佳答案

您应该为继承指定访问说明符,否则默认模式是公共(public)的。

此外,如果您要将所有类放在同一个文件中,那么顺序很重要(我认为)。在您的情况下,MyMenuBar 应该位于 MainWindow 之前。因此,更好的做法是在不同的 header 中包含不同的组件,然后根据需要包含它们。

下面是分别需要两个类的情况的代码:

class TrainingMenu:public QMainWindow {

public:

TrainingMenu(QMenuBar *menubar){
QAction *quit = new QAction("&Quit", menubar);

QMenu *file;

file = menubar->addMenu("&File");
file->addAction(quit);

connect(quit, SIGNAL(triggered()), qApp, SLOT(quit()));
}

};

class MainWindows:public QMainWindow{

private:
TrainingMenu* _menu;
public:
MainWindows(QMainWindow *parent = 0):QMainWindow(parent) {
_menu=new TrainingMenu(MainWindows::menuBar());
this->setWindowTitle("Qt training");
this->setWindowState(Qt::WindowMaximized);
this->show();
}

};



int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindows window;

return app.exec();
}

关于c++ - 如何将菜单栏添加到窗口框架中? [使用 C++ 的 QT],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com