Qt:在显示之前更新隐藏的小部件
Qt: Update widgets that are hidden before they are then shown?
我有两个QDialog堆叠在一起,它们之间共享一些数据,显示在每个对话框布局的QWidget中(一个以图形方式显示计数的小部件)。
在当前显示的QDialog中,用户可以更改该数据。此更改将传播到这两个小部件,并且正确的计数将显示在当前的QDialog中。然而,当用户关闭该QDialog,并且下面的一个变得可见时,显示计数的QWidget会在一瞬间显示旧值,然后更新为正确的值。
我知道在显示另一个QDialog之前,下面的QWidget具有正确的值,但在可见之前,我似乎无法让对话框更新。我在它还隐藏的时候尝试过:
hiddenDialog->layout()->activate()
hiddenDialog->layout()->update()
但它仍然无法真正更新,直到对话框显示之后。我的问题似乎与Qt有关:如何强制隐藏的小部件计算其布局?,除了我想在打开Qt::WA_DontShowOnScreen后显示QDialog。打开Qt:::WA_DontShowOnScreen并更新对话框后,我尝试设置:
dialog->setAttribute(Qt::WA_DontShowOnScreen, false);
dialog->show()
但是对话框仍然没有显示在屏幕上。有什么办法让它再次可见吗?或者,当对话框和小部件被另一个对话框隐藏时,是否有某种方法可以更新它们?
以下是应要求提供的更多详细信息:有两个类,Dialog1和Dialog2,每个类都扩展了相同的基类BaseDialog,后者扩展了QDialog类。
BaseDialog有一个插槽,每当GlobalCount更改时都会调用该插槽。这个槽更新了一个countWidget,它绘制了一张计数的图片。
void BaseDialog::updateCountWidget()
{
_countWidget->updateCount(globalCount);
_countWidget->update();
}
对话框1有一个插槽(通过QPushButton click()连接),用于创建和显示对话框2:
void Dialog1::showDialog2()
{
Dialog2* dialogTwo = new Dialog2();
dialog2->show();
}
对话框2有两个插槽(连接到QPushButton信号),一个从全局计数中减去,另一个关闭对话框。当减去全局计数时,它会发出一个连接到Dialog1和Dialog2的updateCountWidget()插槽的信号。
void Dialog2::subtractCount()
{
GlobalCount.subtractOne();
}
void Dialog2::userClosed()
{
accept();
}
当我点击减法按钮时,我可以正确地看到Dialog2的_countWidget更新。然而,当我关闭Dialog2,并且可以再次看到Dialog1时,Dialog1的_countWidget会在一瞬间显示原始计数值,然后更新为新值。
我的目标是防止这种瞬间的更新,因为它对用户来说真的很时髦。这已经很长时间了,但我很感激任何见解!
调用
hide()
当你做时在小部件上
setAttribute(Qt::WA_DontShowOnScreen, true);
在之后
setAttribute(Qt::WA_DontShowOnScreen, false);
show()
它将工作
我使用嵌入在Linux 上的Qt
您也可以尝试在->activate()
之前执行hiddenDialog->layout()->update()
,这对我来说是类似的情况,不需要处理WA_xxx属性。
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 是否可以从其他线程隐藏qt小部件窗口
- 隐藏QDockWidget的小部件并同时设置垂直标题栏
- C++ 创建小部件数组
- 如何在QT中对小部件进行逻辑分组以便于显示/隐藏
- 小部件隐藏在中央小部件下
- 在qlayout中隐藏小部件
- Qt:在显示之前更新隐藏的小部件
- 总是关注隐藏的小工具?(Qt c++)
- 从另一个选项卡FLTK中开始的线程隐藏小部件
- 如何隐藏Qt小部件应用程序菜单栏
- 如何强制剩余的小部件占用隐藏小部件留下的额外空间