gpt4 book ai didi

qt - 小部件未在基本 Qt 应用程序(QMainWindow)中显示

转载 作者:行者123 更新时间:2023-12-04 13:14:00 29 4
gpt4 key购买 nike

我是 Qt 的新手,我正在用简单的例子做一些练习。

我只是想用一个简单的应用程序测试我的知识,通过编码,用户在 QLineEdit 小部件中键入文本,文本将显示在 QLabel 中。没有必要让它有用。我只是想试试。

在编译应用程序时,我没有收到任何错误。但是,当窗口打开时,QLabel 和 QLineEdit 小部件不可见。

我的代码在这里:

窗口.h

#ifndef WINDOW_H
#define WINDOW_H

#include <QMainWindow>

class QGridLayout;
class QLabel;
class QLineEdit;

class Window : public QMainWindow
{
Q_OBJECT

public:
explicit Window(QWidget *parent = 0);

private:
QGridLayout *mainLayout;
QLabel *label;
QLineEdit *lineEdit;
};

#endif // WINDOW_H

窗口.cpp
#include "Window.h"
#include <QGridLayout>
#include <QLineEdit>
#include <QLabel>

Window::Window(QWidget *parent)
: QMainWindow(parent)
{
mainLayout = new QGridLayout;
label = new QLabel(tr("Text"));
lineEdit = new QLineEdit;

mainLayout->addWidget(label, 0, 0);
mainLayout->addWidget(lineEdit, 1, 0);
setLayout(mainLayout);

connect(lineEdit, SIGNAL(textChanged(QString)),
label, SLOT(setText(QString)));
}

主.cpp
#include <QApplication>
#include "Window.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

Window window;
window.show();

return app.exec();
}

我在代码中找不到任何错误。

提前致谢。

最佳答案

一个 QMainWindow必须有一个中央小部件,即使它只是一个占位符。另请注意,它有自己的用于添加工具栏、菜单栏等的布局 - 因此您可能希望为中央小部件设置布局(代码中的 mainLayout)。
查看QMainWindow class reference详情。
要使您的小部件在主窗口中可见,您可以像这样修改您的构造函数:
窗口.cpp

#include "Window.h"
#include <QGridLayout>
#include <QLineEdit>
#include <QLabel>

Window::Window(QWidget *parent)
: QMainWindow(parent)
{
QWidget* someWidget = new QWidget(this);
mainLayout = new QGridLayout;
label = new QLabel(tr("Text"));
lineEdit = new QLineEdit;

mainLayout->addWidget(label, 0, 0);
mainLayout->addWidget(lineEdit, 1, 0);
someWidget->setLayout(mainLayout);

connect(lineEdit, SIGNAL(textChanged(QString)),
label, SLOT(setText(QString)));

setCentralWidget(someWidget);
}

关于qt - 小部件未在基本 Qt 应用程序(QMainWindow)中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001250/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com