QT对话框窗口禁用ewerningOntonop会导致窗口关闭
Qt Dialog Window disabling alwaysontop leads to window closing
我正在用这些标志创建一个对话框窗口:
this->setWindowFlags(this->windowFlags() ^ Qt::WindowContextHelpButtonHint);
this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint);
ui.setupUi(this);
考虑到创建的对话框窗口,最适合的
按要求在顶部停留。但是,对话框窗口还具有一个复选框,其目的是让用户禁用其ewloctOntop属性,为此,这些代码行中存在于类构造函数中:
QObject::connect(ui.cbAlwaysOnTop, &QCheckBox::clicked, this, &SearchWindow::IsSetOnTop);
,功能是:
void IsSetOnTop() {
if (ui.cbAlwaysOnTop->checkState())
this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint);
else
this->setWindowFlags(this->windowFlags() ^ Qt::WindowStaysOnTopHint);//^ Qt::WindowStaysOnTopHint
}
问题在于,一旦Checkbox EnversionOntop未经选中,窗口就简单地消失了(看来它不再存在)。知道我做错了什么?
记录在窗口上调用 setWindowFlags()
,以使窗口隐藏:
此功能更改窗口的标志时调用
setParent()
,从而导致窗口部件被隐藏。您必须致电show()
才能使小部件再次可见。
使用setWindowFlags()
后,您只需要致电show()
,这是一个最小的示例:
#include <QtWidgets>
int main(int argc, char* argv[]){
QApplication a(argc, argv);
QWidget w;
QVBoxLayout layout(&w);
QCheckBox cb("always on top check box.");
layout.addWidget(&cb);
QObject::connect(&cb, &QCheckBox::toggled, &w, [&](){
if(cb.isChecked())
w.setWindowFlags(w.windowFlags() | Qt::WindowStaysOnTopHint);
else
w.setWindowFlags(w.windowFlags() & ~Qt::WindowStaysOnTopHint);
//call show() after changing window flags
w.show();
//^^^^^^^
});
w.show();
return a.exec();
}
请查看窗口标志的示例,并注意show()
在那里呼叫。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息