• 6712阅读
  • 7回复

[提问]QT全屏显示问题,求助 [复制链接]

上一主题 下一主题
离线hbbdzj
 

只看楼主 倒序阅读 楼主  发表于: 2012-11-26
有个DIALOG 加了setWindowFlags(Qt::FramelessWindowHint) 去掉边框,然后showFullScreen()全屏显示问题是按 win + d 组合键最小化隐藏后,点桌面上其他程序图标,DIALOG 会重新全屏显示,求解。
离线等雨成冰

只看该作者 1楼 发表于: 2012-11-26
回 楼主(hbbdzj) 的帖子
问题描述不清楚,我写了一个DIALOG不会出现这样的问题(我的系统是WIN7)
淡泊以明志 宁静以致远
离线hbbdzj

只看该作者 2楼 发表于: 2012-11-26
#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication app (argc, argv);
    QVBoxLayout *hlayout=new QVBoxLayout();
    QPushButton *button=new QPushButton("im ok");
    QLabel *label = new QLabel("Hello Qt!");
    QWidget *window = new QWidget;
    window->setWindowTitle("main");
    hlayout->addWidget(button);
    hlayout->addWidget(label);
    window->setLayout(hlayout);
    window->setWindowFlags(Qt::FramelessWindowHint);
    window->showFullScreen();
    return app.exec();
}

run起来后按win+d 组合键,会最小化显示桌面,然后点桌面上任意其他图标,刚才的程序是不是有全屏了?
离线hbbdzj

只看该作者 3楼 发表于: 2012-11-26
回 1楼(等雨成冰) 的帖子
#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication app (argc, argv);
    QVBoxLayout *hlayout=new QVBoxLayout();
    QPushButton *button=new QPushButton("im ok");
    QLabel *label = new QLabel("Hello Qt!");
    QWidget *window = new QWidget;
    window->setWindowTitle("main");
    hlayout->addWidget(button);
    hlayout->addWidget(label);
    window->setLayout(hlayout);
    window->setWindowFlags(Qt::FramelessWindowHint);
    window->showFullScreen();
    return app.exec();
}

run起来后按win+d 组合键,会最小化显示桌面,然后点桌面上任意其他图标,刚才的程序是不是有全屏了?
离线等雨成冰

只看该作者 4楼 发表于: 2012-11-26
回 3楼(hbbdzj) 的帖子
win+d这是window的快捷键用于显示桌面与win7右下角的那个按钮功能一样。你最好还是在函数里面即一个button让它最小化吧。至于具体的原理我也不是很明白。你也没说你要达到啥目的?
QObject::connect(button,SIGNAL(clicked()),window,SLOT(showMinimized()));
淡泊以明志 宁静以致远
离线hbbdzj

只看该作者 5楼 发表于: 2012-11-26
回 4楼(等雨成冰) 的帖子
去掉边框后最小化 关闭在程序里面都有添加button实现过,现在要达到的目的是:

程序全屏显示, run起来后按win+d 组合键,会最小化显示桌面,然后点桌面上任意其他图标,刚才的程序不会全屏出来。


想到一个方案是keyPressEvent里面得到win+d组合键,但是试了下,没法得到win键
离线等雨成冰

只看该作者 6楼 发表于: 2012-11-26
回 5楼(hbbdzj) 的帖子
问题出在window->showFullScreen(); 这句话上,你可以去看看showFullScreen()的使用手册。
淡泊以明志 宁静以致远
离线hbbdzj

只看该作者 7楼 发表于: 2012-11-26
回 6楼(等雨成冰) 的帖子
1,
window->show();
window->resize(width,height);

2.
window->showMaximized ();
这两种都尝试过

同样的代码如果
setWindowFlags(Qt::FramelessWindowHint);  
window->show();

这样现象也一样的

快速回复
限100 字节
 
上一个 下一个