![](/img/trans.png)
[英]Why can I only add elements to a QWidget during runtime if the QWidget isn't visible on the screen?
[英]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
}
但是,如果我尝试在运行时添加subwidget,sub_frame仍为空白。 即信号反应:
void MyWidget::SlotFunction(int i) {
sub_w = new MySubWidget(sub_frame); // update, repaint, show and hide methods aren't helphul
}
您正在履行职责吗?
在创建MySubWidget
的new
实例之前,将函数放在顶部:
qDebug() << Q_FUNC_INFO;
插槽是否正确连接?
Qt将使用运行时警告通知您是否无法连接插槽。 查看Qt Creator中显示的调试输出,它可能会提到从未到达插槽的原因。
subframe
可见吗?
如果对象的父对象不可见,则仅当显示父对象时,显示或隐藏子对象才会对其产生影响。
希望能有所帮助。 祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.