诺基亚刚刚在Qt的最新beta版本中推出了Qt Quick(在声明中使用CSS/HTML构建UI),查看这个示例页面,它可以构建精美的现代UI,非常酷!
相反,由'传统Qt'开发的UI似乎不那么花哨(我可能错了,请参阅下面的免责声明).
所以我的问题是,您是否会将"Traditional Qt"或"Qt Quick"用于新的桌面程序?为什么?
我最初的想法:
'传统Qt':
优点:
使用的整体技术更少,更简单,如果你使用PySide,你只用Python编写代码,不必乱用Qt Quick中类似CSS/JS的东西;
它比较成熟.
缺点:
建立花哨的UI似乎更难?
'Qt Quick':
优点和缺点:反过来.
Edit:Qt Quick有一个缺点,纠正我,如果我错了,你不能以所见即所得的方式设计Qt Quick UI,对吧?
免责声明:我是Qt,PySide和Python的新手,最近才开始使用这些技术来构建桌面程序.
QML:如何在MouseArea上处理鼠标悬停事件?任何人都可以提供简单的例子或说出我的错误吗?
import QtQuick 1.1
Image {
source: "quit.png"
scale: mouseArea.containsMouse ? 0.8 : 1.0
smooth: quitMouse.containsMouse
MouseArea {
id: quitMouse
anchors.fill: parent
anchors.margins: -10
onClicked: Qt.quit()
}
}
Run Code Online (Sandbox Code Playgroud) 你能告诉我下面的代码有没有办法改变imgx元素属性.我必须使用javascript更改imgx.x值.或者还有其他方法吗?我搜索qt docs但没有帮助.谢谢.
Row {
Repeater {
id:mmm
model : 10
Rectangle{
clip: true
width: 54
height: 80
color:"transparent"
Image {
id:imgx
//x:-160
//x:-105
//x:-50
x:0
source: "images/tarama_lights.png"
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来在qtquick 2.0项目中呈现我的自定义opengl调用.为了给你一些上下文:我有一个使用opengl进行渲染的C++ 3d引擎.目标是让它在qtquick 2.0 UI中呈现.
我发现的是pre qt 5.0(qtquick 2.0)你会使用QtGlWidget并将其嵌入到QDeclarativeView中.我发现的另一种方法是使用QtDeclarativeItem并覆盖void QDeclarativeItem :: paint(QPainter*p,const QStyleOptionGraphicsItem*o,QWidget*w)方法.
据我了解,这是不可能的,因为QtQuick 2.0使用基于OpenGl的新渲染器.因此,它似乎不像重写油漆方法那么容易.
有谁知道如何实现一个允许渲染我的opengl调用的QQuickItem?
我正在开发一个简单的QML应用程序,我注意到,与QML窗口相比,调整大小和移动窗口会产生难看的闪烁QtWidgets.
所以我创建了2个测试应用程序来显示差异:
QWidgets:

QML:

正如您所看到的那样QML,应用程序的版本闪烁得非常难看,而QtWidgets一个版本很干净.当你的用户界面越来越复杂时,现在这变得非常难看.
你对此有什么了解吗?这是一个错误吗?针对此问题是否有任何修复/解决方法?
经过4年的缺席,我终于再次回到Qt开发.我对它所经历的发展印象深刻,但也有点被Qt Quick搞砸了,后者刚刚在Qt 4.7中引入
对我来说,似乎需要在Java Script中使用一些逻辑构建一个快速,吸引人的GUI.但是,如果我要构建一个C++应用程序,Qt Quick是否也是为此构建GUI的现代方法,还是应该通过使用这些.ui文件来遵循经典路径?
QMessageBox::information()当用户希望使用Qt Quick Controls编写QML应用程序时,相当于什么?
使用Qt 5和QtQuick 2.0
的.pro
# Add more folders to ship with the application, here
folder_01.source = qml/untitled
folder_01.target = qml
DEPLOYMENTFOLDERS = folder_01
# Additional import path used to resolve QML modules in Creator's code model
QML_IMPORT_PATH =
# If your application uses the Qt Mobility libraries, uncomment the following
# lines and add the respective components to the MOBILITY variable.
# CONFIG += mobility
# MOBILITY +=
#CONFIG += qt plugin
#QT += qml quick
# The .cpp file …Run Code Online (Sandbox Code Playgroud) 我正在将一些Qt(C++和QML)代码从Qt4.8升级到Qt5.1.
Qt4.8代码是一个简单的C++"QML查看器"应用程序子类化a QDeclarativeView和一堆QML.
QQuickView除了一件事之外,很容易将其更改为使用Qt5/QtQuick2 :
Qt4.8应用程序有一个打印到PDF的方法:
void MyQMLViewer::printToPDF(const QString& filename) const {
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setPageSize(QPrinter::A3);
printer.setOutputFileName(filename);
printer.setOrientation(QPrinter::Landscape);
QPainter painter(&printer);
render(&painter);
}
Run Code Online (Sandbox Code Playgroud)
Qt5.1需要进行一些"环境"更改才能获得QPrinter(即添加QT += printsupport到项目.pro文件中#include <QtPrintSupport>),但似乎有一个更基本的问题,QQuickView它不提供任何明显与QGraphicsView/ 兼容的东西.QPainter/ QPaintDeviceworld of QPrinter(具体来说,QQuickView没有render方法,所有绘图/绘画/渲染相关的方法看起来与OpenGL非常相关).
有关如何从中获得高质量PDF输出的任何建议QQuickView?
(请注意,我not只是希望截图的视图;与QDeclarativeView上面的代码生成的PDF文件与很多更好的分辨率甚至超过了应用程序全屏我最大的显示器上).
我看到"将QML应用程序移植到Qt 5"指南中的"QDeclarativeItem和QDeclarativeView"部分确实提到了QGraphicsView特定功能的丢失,但没有提供任何解决方案(尽管它确实提到了带有自定义项目的工作场所QPainter-基础渲染被买入新政权).
更新一些额外的背景信息:可以在此处找到使用上述代码从QDeclarativeView打印的PDF示例.有一个体面的大小监视器上相同的观点的PNG 这里.(这实际上是一系列幻灯片中的最后一张幻灯片;它实际上是以前幻灯片的一个画廊,它将每张幻灯片反弹到屏幕上;如果我有时间,我会考虑画廊的可行性是唯一的改变每个分散的幻灯片进入Prezi风格的演示视图;怀疑QDeclarative虽然不够真实,这是想要进入QtQuick2 + Qt5.2的新场景图形的一个原因).无论如何,如果你将PDF缩放到100%,你会看到文本是...好吧,它比任何一个大小合适的图像文件管理我认为,尽管倾斜的文本基线可能看起来有点不均匀.还有一个问题,不透明度值没有在PDF中表示(因此阴影和"气泡"变得坚固); …
我有一个使用以下模块的Qt Quick应用程序
QT = core gui qml quick widgets \
core-private gui-private \
multimedia printsupport`
Run Code Online (Sandbox Code Playgroud)
我在OS X上部署.现在我的主要二进制文件以及许多Qt Qtick插件显示出对Qt Network的依赖.
otool -L /path/to/My.app/Contents/MacOS/My
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 55471.14.18)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
@executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.4.0, current version 5.4.2)
/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility …Run Code Online (Sandbox Code Playgroud)