void HomeWindow::paintEvent(QPaintEvent *e)
QWidget *pActiveWindow = QApplication::activeWindow();
HomeWindow *pMainWindow = dynamic_cast<HomeWindow*>(pActiveWindow);
if(pMainWindow && pMainWindow == this)
qDebug()<<"没有弹框";
}else{
qDebug()<<"有弹框";
1.实际开发遇到的场景:当程序除了主界面外,还有其他弹窗时,需要禁用一些操作,像出现警示的QMessageBox、向导窗口QWizard、模态或非模态的QWidget如帮助窗口等等,在这种场景下,我们该如何获知当前是否有其他弹窗。
2.场景假设:我们的主界面为MainWindow.
3.解决方法:QApplication的activeWindow()方法可以返回当前焦点所在的顶级窗口,在有其他弹窗...
// 各种浏览器兼容
var hidden, state, visibilityChange;
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
state = "visibilityState...
1. 在创建的文件中写入进程的ID,如果机器非正常退出,重启后先读取这个文件,得到进程ID,再根据ID判定进程是否正在运行,如果不是,则把文件删除掉。这样就不会发生不删除文件,程序运行不起来的问题了。2. 打开一个文件,然后锁定,新运行的程序会试图再次锁定该文件,但是因为已经被锁定,所以会返回错误信息。据此就可以判断是否有程序已经运行。设置FD_CLOEXEC后,只要程序终止,都可以再次锁定。...
Qt开发中,发现有时候使用 QMessageBox::information()进行弹窗提示的时候,提示框被被遮挡在窗体后面,因为窗体被设置了置顶属性,这两者存在冲突。原因是information函数中传入了默认的formMain(启动窗体), 而后续启动的窗体都在formMain的上面,因此从formMain弹出的提示框都被盖住了。问题解决,每次提示框都能保持在屏幕最前面了。
前言Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta
ObjectCompiler,moc))以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt
Creator3
我们知道,在windows上通过鼠标双击某应用程序图标,该应用程序往往会以顶层窗口的形式呈现在我们面前,但是对于一个已经打开的非顶层窗口,我们怎么将其激活为顶层窗口呢?
要达到激活,这个必须要满足两个条件,第一,必须要有通知激活的人,这个人必须是另一个应用程序(或同一应用程序的不同示例),他能发送信息给该窗体;第二,该窗体能够解析出该消息。至于一个应用程序如何向另一个应用程序发送
在delphi中使用Application.BringToFront;可以保证当前程序显示在最前。然而今天在Qt中,没有类似函数供调用。尝试了activeWindow,show,showNormal,showMaximized 等函数还是不行。网上有方法设置窗体的windowFlags,具体方法为:pMainForm->setWindowFlags(pMainForm->windowF...
connect(exportDlg,&QDialog::clicked,this,[=](){
QScopedPointer<QWidget>shadow(new QWidget(this));
shadow->setFixedSize(size());
QPalette pal(shadow-&g.
写应用程序的过程中,弹窗是个避免不了的功能,显示中,假设弹窗背景色和主窗口背景色相差不多,甚至是一样的时候,就会存在一个比较严重的人机交互和UI显示的问题,找到弹窗的边界是比较麻烦的一件事。但是如果我们能在弹窗显示的时候被主窗口其他的部位增加一个背景色,这个背景色与弹窗的背景色形成比较大的色差,那么是不是就能够很容易的找到弹窗的边界。因此,我们实现一个自定义组件,可随便设置需要遮罩的主窗口,并且能够让其跟随主窗口的移动而移动。先来看下效果: 以上,我们来看下该组件的头文件定义:
由上面的类定义也能够看出来,
boolIsCoveredByOtherWindow(HWNDhWnd){RECTrcTarget;GetWindowRect(hWnd,&rcTarget);boolisChild=(WS_CHILD==(GetWindowLong(hWnd,GWL_STYLE)&WS_CHILD));if(GetDeskt...