元素不显示在对话框中
Elements don't show up on Dialog
我正在尝试使用 QT 实现一个对话框。这是我第一次写一个 Dialog 而不是使用设计器。这是因为此对话框将包含一些字段,这些字段将取决于某些选择是否出现。
到目前为止,我一直在遵循本指南,但将其用于我自己的领域:
https://www.informit.com/articles/article.aspx?p=1405224
当我 运行 应用程序时,我的元素(LineEdit 和 Lable)不知何故没有出现在对话框中。
我不明白我真正缺少的是什么。我是否需要以某种方式将元素添加到代码对话框中?
这是我的头文件:
#ifndef PLANETARYVIEW_H
#define PLANETARYVIEW_H
#include <QDialog>
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
class PlanetaryView : public QDialog
{
Q_OBJECT
public:
explicit PlanetaryView(QWidget *parent = nullptr);
private:
QVBoxLayout* PlanetsVLayout;
QLabel* PlanetLabel;
QLineEdit* PlanetLineEdit;
};
#endif // PLANETARYVIEW_H
那是我的 cpp 文件
#include "planetaryview.h"
PlanetaryView::PlanetaryView(QWidget *parent)
:QDialog(parent)
{
PlanetsVLayout = new QVBoxLayout();
PlanetLineEdit = new QLineEdit();
PlanetsVLayout->addWidget(PlanetLineEdit);
PlanetLabel = new QLabel("Planet:");
PlanetLabel->setBuddy(PlanetLineEdit);
PlanetsVLayout->addWidget(PlanetLabel);
}
想法是让 Lable 和 LineEdit 在对话框中并排放置。
问题是布局没有分配给widget,解决方法是
PlanetsVLayout = new QVBoxLayout(this);
或
PlanetsVLayout = new QVBoxLayout();
setLayout(PlanetsVLayout);
我正在尝试使用 QT 实现一个对话框。这是我第一次写一个 Dialog 而不是使用设计器。这是因为此对话框将包含一些字段,这些字段将取决于某些选择是否出现。
到目前为止,我一直在遵循本指南,但将其用于我自己的领域: https://www.informit.com/articles/article.aspx?p=1405224
当我 运行 应用程序时,我的元素(LineEdit 和 Lable)不知何故没有出现在对话框中。 我不明白我真正缺少的是什么。我是否需要以某种方式将元素添加到代码对话框中?
这是我的头文件:
#ifndef PLANETARYVIEW_H
#define PLANETARYVIEW_H
#include <QDialog>
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
class PlanetaryView : public QDialog
{
Q_OBJECT
public:
explicit PlanetaryView(QWidget *parent = nullptr);
private:
QVBoxLayout* PlanetsVLayout;
QLabel* PlanetLabel;
QLineEdit* PlanetLineEdit;
};
#endif // PLANETARYVIEW_H
那是我的 cpp 文件
#include "planetaryview.h"
PlanetaryView::PlanetaryView(QWidget *parent)
:QDialog(parent)
{
PlanetsVLayout = new QVBoxLayout();
PlanetLineEdit = new QLineEdit();
PlanetsVLayout->addWidget(PlanetLineEdit);
PlanetLabel = new QLabel("Planet:");
PlanetLabel->setBuddy(PlanetLineEdit);
PlanetsVLayout->addWidget(PlanetLabel);
}
想法是让 Lable 和 LineEdit 在对话框中并排放置。
问题是布局没有分配给widget,解决方法是
PlanetsVLayout = new QVBoxLayout(this);
或
PlanetsVLayout = new QVBoxLayout();
setLayout(PlanetsVLayout);