C++ 如何在 QT 中的另一个小部件内小部件?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3699801/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-28 13:31:10  来源:igfitidea点击:

How to Widget inside another widget in QT?

c++qt4

提问by saravanan

hi how to add widget inside widget

嗨如何在小部件内添加小部件

i created main widget, and for the main widget headerbar come from another widget. here the code below

我创建了主小部件,并且主小部件标题栏来自另一个小部件。这里是下面的代码

main.cpp

主程序

#include <QApplication>
#include "mainwindow.h"

int main(int argl,char *argv[])
{
    QApplication test(argl,argv);

    mainWindow *window=new mainWindow();
    window->setWindowState(Qt::WindowFullScreen);
    window->show();

    return test.exec();
}

mainwindow.cpp

主窗口.cpp

#include "mainwindow.h"
#include <QtGui>
#include "headerbar.h"
#include <QGridLayout>

mainWindow::mainWindow(QWidget *parent) : QWidget(parent)
{

    QGridLayout *layout;
    headerBar *Header=new headerBar(this);
    layout->addWidget(Header,0,0);
    this->setLayout(layout);
}


mainWindow::~mainWindow()
{

}

headerbar.cpp

标题栏.cpp

#include "headerbar.h"

headerBar::headerBar(QWidget *parent) : QWidget(parent)
{
    this->setMaximumHeight(24);
}

headerBar::~headerBar()
{

}

mainwindow.h

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>

class mainWindow : public QWidget
{
    Q_OBJECT
public:
    mainWindow(QWidget *parent = 0);
    ~mainWindow();

signals:

public slots:

};

#endif // MAINWINDOW_H

headerbar.h

标题栏.h

#ifndef HEADERBAR_H
#define HEADERBAR_H

#include <QWidget>

class headerBar : public QWidget
{
    Q_OBJECT
public:
    headerBar(QWidget *parent = 0);
    ~headerBar();

signals:

public slots:

};

#endif // HEADERBAR_H

while compile this code no errors. but when i am trying to run it's through error "exited with code -1073741819"

编译此代码时没有错误。但是当我尝试运行它时出现错误“以代码 -1073741819 退出”

please help me to fix this issue

请帮我解决这个问题

回答by Georg Fritzsche

While you use layout, you have never created and assigned an instance to it:

当您使用 时layout,您从未为其创建和分配实例:

QGridLayout *layout; // no initialization here
headerBar *Header = new headerBar(this);
layout->addWidget(Header,0,0); // layout is uninitialized and probably garbage

You should create it first before using it:

您应该在使用它之前先创建它:

QGridLayout *layout = new QGridLayout(this);