Qt 如何避免打开多个相同子界面?

Qt 如何避免打开多个相同子界面?,第1张

可以设置一个标明枯颂志变量判断前一次 子窗口是否打开 如果打开就设置再次点击无效

floga = 0

void Widget::pushbutton_clicked()

{

if(floga == 0){

floga = 1

ui->Widget_little->show

}

}

退出时在还原floga的值就好激郑 我也是败棚刚学QT,不过公司有模板。。。

在windows下互斥有个唯一的key,通过key去创建互斥体,如果这巧腔薯个互斥体已经存在了,那么通过GetLastError能获取到这个信息,表示程序已经在运行了。互斥体还有个优点圆裤就是在程序关闭时孝者,会自动释放掉!

#include "mainwindow.h"

#include <QApplication>

#include <windows.h>

int main(int argc, char *argv[]){

QApplication a(argc, argv)

QString strKey = "mykey"

LPCWSTR wstrKey = strKey.toStdWString().c_str()

HANDLE hMetex = CreateMutex(NULL,FALSE,wstrKey)

if(GetLastError() == ERROR_ALREADY_EXISTS){

//如果互斥体存在,说明程序已经有实例在运行了,释放资源然后关闭本实例

if(hMetex){

CloseHandle(hMetex)

hMetex = NULL

}

return -1

}

MainWindow w

w.show()

return a.exec()

}

这样一般情圆尺蚂况下就是很卡的原因。等一下就行、。如果不行那就是QT被卡死了。你应该结束那个没有反应的在重困嫌新开。如果自己觉得很正常但是又不能打开那就关掉杀毒软件。一般在橘埋你打开多开之前就应该先关掉杀毒软件了。记住哦。是彻底退出。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/12442043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存