簡體   English   中英

如何在QT中的另一個小部件中進行小組件?

[英]How to Widget inside another widget in QT?

您好如何在小部件內添加小部件

我創建了主窗口小部件,主窗口小部件標題欄來自另一個窗口小部件。 這里的代碼如下

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

#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

#include "headerbar.h"

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

headerBar::~headerBar()
{

}

mainwindow.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

#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

編譯此代碼時沒有錯誤。 但當我試圖通過錯誤“退出代碼-1073741819”運行它

請幫我解決這個問題

在使用layout ,您從未創建並為其分配實例:

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

您應該在使用它之前先創建它:

QGridLayout *layout = new QGridLayout(this);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM