• 14335阅读
  • 7回复

[讨论]Qt高分屏的支持 [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2016-07-18

Qt5.6.0开始,支持High-DPI
代码修改方法,在下面的地方加上黄色背景:
int main(int argc, char *argv[])
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
    QApplication a(argc, argv);
… …
}
注意,QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);一定要加在QApplication创建 之前。#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))保证只在Qt5.6.0及以上版本可用
离线toby520

只看该作者 1楼 发表于: 2016-07-18
        
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线一窝蜂117

只看该作者 2楼 发表于: 2016-09-08
你好,我现在有一个问题,我用qt做的程序,在高分屏上显示的特别小,界面大小都是用的px(qt的setWidth应该设置的像素吧)请问您有什么解决方案吗?感谢
离线realfan

只看该作者 3楼 发表于: 2016-09-09
回 一窝蜂117 的帖子
一窝蜂117:你好,我现在有一个问题,我用qt做的程序,在高分屏上显示的特别小,界面大小都是用的px(qt的setWidth应该设置的像素吧)请问您有什么解决方案吗?感谢  (2016-09-08 18:10) 

请确保用的是Qt5.6以上版本,5.6才开始支持HDPI
离线stlcours

只看该作者 4楼 发表于: 2016-09-09
回 realfan 的帖子
realfan:请确保用的是Qt5.6以上版本,5.6才开始支持HDPI (2016-09-09 17:08) 

我是这样写的,对不对,还是更对?
    if (qApp->devicePixelRatio()>1) {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
        QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
    }
因为我没搞懂,如果加上setAttribute(Qt::AA_EnableHighDpiScaling);这句,会不会导致普通显示器下显示有问题??
离线realfan

只看该作者 5楼 发表于: 2016-09-09
回 stlcours 的帖子
stlcours:我是这样写的,对不对,还是更对?
    if (qApp->devicePixelRatio()>1) {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
        QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
..... .. (2016-09-09 19:26) 

我试下来,加了高清屏支持,在普通屏上,也没问题的。没加if (qApp->devicePixelRatio()>1)
离线stlcours

只看该作者 6楼 发表于: 2016-09-09
回 realfan 的帖子
realfan:我试下来,加了高清屏支持,在普通屏上,也没问题的。没加if (qApp->devicePixelRatio()>1) (2016-09-09 21:28) 

谢谢。但是还有一点不明白,既然说了
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
要写在第一句。那么我这句:
qApp->devicePixelRatio()
会不会有影响?

另外,到底什么是qApp呢?与    QApplication app(argc, argv); 里的app不是同一个东西?
离线realfan

只看该作者 7楼 发表于: 2016-09-10
回 stlcours 的帖子
stlcours:谢谢。但是还有一点不明白,既然说了
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
要写在第一句。那么我这句:
qApp->devicePixelRatio()
....... (2016-09-09 22:10) 

我没有试你写的qApp->devicePixelRatio
qApp就是QApplication app(argc, argv); 里的app的指针。在这句之前写,应该是不对的,app还没创建。
快速回复
限100 字节
 
上一个 下一个