c++ - 小部件内的 Qt/C++ 小部件未出现
问题描述
我正在编写 Qt/C++ 项目,并在 QtDesigner 中创建了我的 mainwindow.ui。我在 mainwindow.ui 中放置了一个空的小部件,稍后我想通过将我用代码编写的小部件放在那里来扩展它。这是我的代码:
扩展 QWidget 的类
#pragma once
#include <QtGui>
#include <QWidget>
using namespace QtDataVisualization;
class GraphDataCreator : public QWidget
{
Q_OBJECT
public:
GraphDataCreator(QWidget* parent = 0);
~GraphDataCreator();
};
这个类的cpp:
#include "GraphDataCreator.h"
GraphDataCreator::GraphDataCreator(QWidget* parent)
: QWidget(parent)
{
this->setStyleSheet("background-color:green;");
}
和主窗口类:
#pragma once
#include <QMainWindow>
#include "ui_MainWindow.h"
#include "GraphDataCreator.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QMainWindow*parent = Q_NULLPTR);
~MainWindow();
private:
Ui::MainWindow ui;
};
主窗口类的cpp
#include "MainWindow.h"
#include <string>
#include <QtGui>
#include "GraphDataCreator.h"
MainWindow::MainWindow(QMainWindow*parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QGridLayout* layout = new QGridLayout(ui.Chart3DWidget);
GraphDataCreator* chart3D = new GraphDataCreator(ui.Chart3DWidget);
layout->addWidget(chart3D);
QWidget* test_widget = new QWidget;
test_widget->setStyleSheet("background-color: red;");
layout->addWidget(test_widget);
ui.Chart3DWidget->setLayout(layout);
}
我想成为 ui 绿色的整个小部件,但它没有出现,所以我把 test_widget 放在那里,红色背景,结果是它一半没有/一半是红色的。所以绿色小部件在那里存在,但不可见。我的问题是为什么绿色部分不可见???以及如何解决?
当然,类的名称很奇怪,因为我试图做其他事情,这个解释简化了这个问题。
编辑:
谢谢@sajas 的帮助!实际上我使用了那个链接Why do do stylesheets not work when subclassing QWidget and using Q_OBJECT? 我使用了写在那里的案例 2,所以我删除了 GraphDataCreator 类中的 Q_OBJECT 宏,它在没有任何其他更改的情况下工作。小部件背景颜色的功能我留下了相同的一切。结果是预期的一半绿色/一半红色。无论如何,我认为我应该在链接中包含宏 Q_Object ,因为它是一个 Qt 类,但没有它确实可以工作。也许Qt中有一个小错误???总而言之,如果您删除 Q_Object 宏,它就可以工作。
解决方案
推荐阅读
- java - 如何将时间转换为 UTC,然后转换为设备本地时间
- python - ModuleNotFoundError:没有名为“mylife.wsgi”的模块
- javascript - 为什么我对(this.ingredients)没有定义?
- swift - 当我们在 iOS13 中关闭模式时没有调用生命周期方法
- webpack - 将 QuillJs 与 Webpack 捆绑会导致错误
- c++ - 我不断收到错误 C2248:无法访问在类中声明的私有成员
- python - 如何在递归函数中只运行一次语句
- django - 通过django代码为一对多字段赋值
- ruby-on-rails - Rails 中的宝石冲突与 Activesupport
- git - 无法检索 git stash - 即使在重复尝试和提交后文件也不会合并