使用CMake构建简单的Qt UI应用程序会导致模糊的UI。

7
我创建了一个简单的Qt应用程序,只有一个MainWindow和一个Button。当我使用Qt中的Qmake构建它时,它可以正常运行并且UI也很好。而另一方面,如果使用CMake构建它,应用程序的UI就会变得模糊。
请问有人能告诉我如何解决这个问题吗?谢谢。 QMake生成的应用程序UI- enter image description here CMake生成的应用程序UI- enter image description here 我的CmakeList.txt文件:
make_minimum_required(VERSION 3.0.2)
project(MyProject)

find_package(Qt5Widgets 5.9 PATHS /usr/local/Cellar/qt/5.9.1)
find_package(OpenGL)
#find_package(IOKit PATHS /System/Library/Frameworks/IOKit.framework/Versions/A)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

add_library(mainwindow mainwindow.cpp)
target_link_libraries (mainwindow Qt5::Widgets)

#set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE YES)
add_executable(MyProject MACOSX_BUNDLE main.cpp)
target_link_libraries (MyProject mainwindow ${OPENGL_gl_LIBRARY})

项目结构-

这里输入图片描述

我的机器配置-

这里输入图片描述


它只在Retina显示器上“模糊”吗?这种模糊是因为它没有在@2x模式下运行吗? - Ssswift
@Ssswift 很抱歉,我不确定这个问题,因为我没有在非Retina Mac上进行测试。如果有解决方法,我可以尝试看看是否能够解决这个问题。 - Anwar Shaikh
CMake只是一个(元)构建系统。它本身不能负责使您的应用程序模糊。 - Jesper Juhl
@JesperJuhl 同意!关键在于- 我认为必须在 CMakeLists.txt 中进行一些特定于 Qt GUI 的配置才能使其正常工作。 - Anwar Shaikh
1个回答

7

问题已解决!

我认为创建MacOS捆绑包需要在Info.plist文件中设置以下键,如此处所述

通过添加以下键创建自定义Info.plist文件可解决该问题-

<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>

要添加自定义的Info.plist,请在CMakeLists.txt文件中添加以下行-

# Set a custom plist file for the app bundle
set_target_properties(MyProject PROPERTIES MACOSX_BUNDLE_INFO_PLIST <dir>/Info.plist)

1
请使用<true/>表示布尔值,而不是<string>True</string> - fferri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接