我是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界面的大多数材料他们都认为你使用的是QT GUI ...任何提示关于如何解决问题或者我应该怎样做才能练习C ++ ??
提前致谢
答案 0 :(得分:3)
您应该为继承指定访问说明符,否则默认模式为public。
另外,如果你要在同一个文件中拥有所有类,那么排序很重要(我认为)。在你的情况下,MyMenuBar应该在MainWindow之前。因此,更好的做法是在不同的标题中包含不同的组件,然后根据需要包含它们。
以下是分别需要两个类的代码:
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();
}
答案 1 :(得分:2)
This示例应该足够好了。您执行以下操作:
QMenu
QMenu
实例添加到根级菜单