在运行时添加自定义Qwidget
Adding custom QWidget during runtime
我正在尝试实现自定义窗口层次结构: QMainWindow
-> QFrame
-> MyWidget
-> QFrame
-> MySubWidget
这是mywidget类的样子:
class MyWidget : public QWidget {
Q_OBJECT
public:
MyWidget(QWidget *parent = 0, ...);
...
public slots:
void SlotFunction(int i);
...
private:
MySubWidget *sub_w;
QFrame *sub_frame;
...
}
如果我尝试在mywidget构造函数期间创建一个mysubwidget,则所有mysubwidget元素均以预期显示:
MyWidget::MyWidget (...) : QWidget(parent) {
...
sub_frame = new QFrame(this);
...
sub_w = new MySubWidget(sub_frame); // commented out on a runtime test
}
但是,如果我尝试在运行时添加子威因,则sub_frame仍然空白。IE。信号反应:
void MyWidget::SlotFunction(int i) {
sub_w = new MySubWidget(sub_frame); // update, repaint, show and hide methods aren't helphul
}
我知道这是一个古老的问题,但是我遇到了一个非常相似的问题,事实证明缺乏对Qwidget :: show()的呼吁。也许那也是你的问题?
我的问题在这里:动态添加从qwidget继承的实例
欢呼。
您是否达到功能?
在制作new
的MySubWidget
实例之前,位于功能的顶部:
qDebug() << Q_FUNC_INFO;
插槽连接正确吗?
QT会让您知道它是否无法使用运行时警告连接插槽。查看在QT创建者中显示的调试输出,它可能会提到从未达到插槽的原因。
subframe
可见吗?
如果您的对象的父对象不可见,则显示或隐藏子对象只有在显示父级时会影响它。
希望有帮助。祝你好运。
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- C++自定义比较函数
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- 如何正确实现和访问运算符的各种自定义枚举器
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 自定义先决条件对移动分配运算符有效吗
- 使用VS Code和CMake Tools运行自定义命令
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- std::ranges::elements_view,用于自定义类似元组的数据
- 跟随整数索引列表的自定义类迭代器
- 参数化自定义CMake工具链
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 如何在自定义类中启用'auto loops'?
- 在运行时添加自定义Qwidget
- 不能在绘画中使用 QPainter 自定义 QWidget 的事件 (Qt5)
- 无法从 QVBoxLayout 中删除自定义 QWidget
- 如何防止自定义QWidget被调整大小
- QWidget/QWindow标题栏:自定义外观,原生感觉(类似Chrome)