Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将菜单栏添加到窗口框架中?[QT与C++] 我是C++初学者,我开始学习如何在MVIDE中通过代码使用QT组件。我仍然不知道这是否是开始的最佳选择,但因为我是一名java程序员,所以我用java Swing组件创建了路径。所以,我的问题是,如何沟通我的两类代码,因为在其中一个我制作了窗口框架,在另一个我制作了菜单栏_C++_Qt_Menu_Components_Add - Fatal编程技术网

如何将菜单栏添加到窗口框架中?[QT与C++] 我是C++初学者,我开始学习如何在MVIDE中通过代码使用QT组件。我仍然不知道这是否是开始的最佳选择,但因为我是一名java程序员,所以我用java Swing组件创建了路径。所以,我的问题是,如何沟通我的两类代码,因为在其中一个我制作了窗口框架,在另一个我制作了菜单栏

如何将菜单栏添加到窗口框架中?[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){

在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();
}
<>我试图在窗口类中创建菜单条实例,但它不是很有用,而且老实说,我发现的大多数处理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并传递给它的类来处理。非常感谢你,布朗。附言:如果我理解错了,请纠正我