如何将菜单栏添加到窗口框架中?[QT与C++] 我是C++初学者,我开始学习如何在MVIDE中通过代码使用QT组件。我仍然不知道这是否是开始的最佳选择,但因为我是一名java程序员,所以我用java Swing组件创建了路径。所以,我的问题是,如何沟通我的两类代码,因为在其中一个我制作了窗口框架,在另一个我制作了菜单栏
在java中,我会制作如下内容:如何将菜单栏添加到窗口框架中?[QT与C++] 我是C++初学者,我开始学习如何在MVIDE中通过代码使用QT组件。我仍然不知道这是否是开始的最佳选择,但因为我是一名java程序员,所以我用java Swing组件创建了路径。所以,我的问题是,如何沟通我的两类代码,因为在其中一个我制作了窗口框架,在另一个我制作了菜单栏,c++,qt,menu,components,add,C++,Qt,Menu,Components,Add,在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){
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();
}
<>我试图在窗口类中创建菜单条实例,但它不是很有用,而且老实说,我发现的大多数处理QT接口的材料都是用QT-GUI……关于如何解决这个问题或者我应该怎么做才能实践C++??
提前感谢示例应该足够好了。您可以执行以下操作:
创建一个QMenu,将顶部小部件作为父项
将子菜单QMenu实例添加到根级菜单
榜样应该足够好。您可以执行以下操作:
创建一个QMenu,将顶部小部件作为父项
将子菜单QMenu实例添加到根级菜单
您应该为继承指定访问说明符,否则默认模式为public 此外,如果您要将所有类都放在同一个文件中,那么排序也很重要。在您的情况下,MyMenuBar应该位于主窗口之前。因此,更好的做法是在不同的头中包含不同的组件,然后根据需要包含它们 以下是您分别需要两个类的情况下的代码:
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();
}
您应该为继承指定访问说明符,否则默认模式为public 此外,如果您要将所有类都放在同一个文件中,那么排序也很重要。在您的情况下,MyMenuBar应该位于主窗口之前。因此,更好的做法是在不同的头中包含不同的组件,然后根据需要包含它们 以下是您分别需要两个类的情况下的代码:
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++。不管怎么说,答案非常棒,非常有魅力。我现在意识到*parent是QT应用程序的主要指针,对于我想要创建的每个组件,我都需要在应用程序的主框架或小部件中定义它,从那里开始instaciate并传递给它的类来处理。非常感谢你,布朗。PS:如果我理解错误,请纠正我,抱歉延迟回答,WaST有时间学习C++。不管怎么说,答案非常棒,非常有魅力。我现在意识到*parent是QT应用程序的主要指针,对于我想要创建的每个组件,我都需要在应用程序的主框架或小部件中定义它,从那里开始instaciate并传递给它的类来处理。非常感谢你,布朗。附言:如果我理解错了,请纠正我