QMainWindow,QWidget和QDialog有什么区别?
我有一个项目,想要接受它并选择QT作为首选的框架.我一直试图找出如何开始并安装Qt包(SDK和Qt Creator).问题是 - 我无法弄清楚Qt Quick和Qt Widgets的确切用例.我计划使用这些属性来实现项目的长期目的:
考虑到用例,什么是更好的选择 - Qt Widgets还是Qt Quick?
关于我的一点点以及为什么选择Qt - 我已经离开C++近两年了,并且在Qt中没有做过任何严肃的事情但是Qt是一个比Java更好的选择(我不太喜欢).我再次缺乏Python经验.除了那个Python UI很糟糕,如果我必须为一个好的UI安装QT框架,为什么不在Qt中制作整个东西(考虑到我对C++没问题).所以Qt对我来说是更好的选择.由于该项目需要跨平台兼容,因此Qt对我的眼睛更具吸引力.
几乎每个QtWidgets类都可以拥有父级.通常,在对象初始化时设置父级是可选的.例如,如果我创建一个继承QWidget类的类,我将在构造函数上执行以下操作:
Widget::Widget(QWidget* parent): QWidget(parent) {
hbox = new QHBoxLayout(this);
yes_button = new QPushButton("&Yes");
no_button = new QPushButton("&No", this);
cancel_button = new QPushButton("&Cancel", hbox);
}
Run Code Online (Sandbox Code Playgroud)
我可以设置或不设置父级.我可以cancel_button成为一个孩子hbox.我也可以cancel_button成为一个孩子yes_button,但我认为这是一件坏事.
这有什么意义?而且,是否真的有必要为QWidget我创建的每个基类设置父级?
我刚刚为Windows 32位(MinGW 4.8,OpenGL)安装了Qt 5.1.1,并尝试将其添加到我的cmake中.但是CMake只是不想找到它,我不知道为什么.我错过了什么?我需要设置环境变量吗?
这是我的cmake:
cmake_minimum_required( VERSION 2.8.11 )
PROJECT(Blemmer)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" ${CMAKE_MODULE_PATH})
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
find_package(SFML REQUIRED system window graphics network audio)
# The QUIET option disables messages if the package cannot be found.
FIND_PACKAGE(Qt5Widgets)
add_subdirectory(Entity)
add_subdirectory(Engine)
add_subdirectory(Game)
add_executable(Blemmer main.cpp)
include_directories(${SFML_INCLUDE_DIR} ${PROJECT_SOURCE_DIR})
target_link_libraries(Blemmer ${SFML_LIBRARIES} Game Engine Qt5::Widgets)
Run Code Online (Sandbox Code Playgroud)
这是cmake-gui的输出:
CMake …Run Code Online (Sandbox Code Playgroud) 我最近更新到了Qt5 for Python的新版本.在这样做时,我一直在根据已经发生的一些显着变化来改变我的代码.我希望能够深入了解我创建的这一行代码.这感觉就像是解决从函数中获取string而不是a 的问题的一种肮脏方式tuple.(注意[0]在行尾)
filename = QtWidgets.QFileDialog.getOpenFileName(None, "Open " + key + " Data File", '.', "(*.csv)")[0]
Run Code Online (Sandbox Code Playgroud)
我想要 filename = {str}'C:/.././.../format.csv'
不 filename = <class 'tuple'>: ('C:/.././.../format.csv', '(*.csv)')
我是新手,刚开始学习Python编程:
import sys
from PyQt5 import QtWidgets
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QMainWindow()
mainWindow.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,每个都可以.但是当我运行下面的代码时,它失败并显示以下错误消息:app = PyQt5.QtWidgets.QApplication(sys.argv)AttributeError:'module'对象没有属性'QtWidgets'
import sys
import PyQt5
if __name__ == "__main__":
app = PyQt5.QtWidgets.QApplication(sys.argv)
mainWindow = PyQt5.Qtwidgets.QmainWindow()
mainWindow.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我的Python版本是2.7,我使用的是Qt5库,我的操作系统是OpenSUSE 13.2,当然是Linux的发行版.
我正在为Windows 10编写一个简单的Qt(Widgets)Gui应用程序.我正在使用Qt的5.6.0 beta版本.
我遇到的问题是它根本没有缩放到我的表面笔的屏幕上:
这有点难以分辨,因为SO会缩放图像,但请注意停靠窗口小部件标题栏控制相对于窗口标题栏控件的小小.
来自Qt的这个链接谈到了扩展,但它主要集中在qml/qtQuick和移动应用程序上,而且似乎暗示在桌面QtWidgets应用程序中,QPainter将自动确定正确的缩放,这显然不是.
什么是确保桌面非qml Qt应用程序在高DPI监视器上正确扩展的最佳方法,特别是在Windows 10中?
在 CLion 中,Qt Console 和 Qt Widgets 可执行项目模板有什么区别。我的直觉是 Qt Console 是 CLI,Widgets 是 GUI,但谷歌搜索尚未证实这一点。我希望这个 QnA 能够帮助未来的谷歌用户。
我正在使用 QtCharts 类制作折线图。我希望能够在图表本身上添加注释/文本。我怎样才能做到这一点?我找到了一个类似于我想要的示例“ https://doc.qt.io/qt-5/qtcharts-callout-example.html ” 有没有更简单的方法?