java widget_按下按钮后显示QWidget

我想动态更改QMainWindow中的QWidget . 因此,将删除旧窗口小部件(如果存在),将构造一个新窗口小部件并将其添加到主窗口 . 小部件(_visualization)是一个QMainWindow本身,它包含一个菜单栏和一个显示OSG场景图的小部件 . 如果我不在新窗口小部件上调用 show() ,我只会看到菜单栏,但不会看到场景图 .

我的目标是在用户点击按钮时调用 show() . 该按钮与外部QMainWindow(MyQMainWindow)连接 .

不幸的是,当我在连接方法中对_visualization调用 show() 时,将不会显示场景图 . 与此相反,如果我在构造函数方法( loadVisualization(...) )中调用它,将显示场景图 .

MyQMainWindow::MyQMainWindow(QWidget *parent ) :

QMainWindow(parent) {

...

loadVisualization(...);

connect(_ui->nextButton, SIGNAL(clicked()), this, SLOT(showNext()));

...

}

void MyQMainWindow::loadVisualization(QString filePath) {

if (_visualization) {

_heightWidgetLayout->removeWidget(_visualization);

delete _visualization;

}

_visualization= new HeightVisualization(0, filePath);

_visualization->setParent(_mainWindowWidget);

_heightWidgetLayout->addWidget(_visualization);

//_visualization->show(); // will work here

}

void MyQMainWindow::showNext() {

_visualization->show(); // does not work here!

}

我知道QT会在小部件上调用 setVisible(...) . 此方法首先测试QT中的某些状态( testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden) ) . 如果我在 showNext() 中调用show(),这些测试会导致返回而不做任何更改 .

连接器和插槽有问题吗?当用户点击按钮时,是否有可能显示小部件?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值