问题标签 [qt5.5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - 升级到 qt 5.5.0 后,我收到有关 QML 导入的警告
我今天刚从 5.4.1 升级到 5.5.0。但是当我构建我的 android 项目时,我在编译输出中收到这些警告行:
这是什么?我的项目在以前的版本中编译时没有任何警告。
c++ - Qt Gui Application icon setup
I want to setup an icon for my qt gui application , and followed the steps listed below:
but it is giving this error:
mingw32-make[1]: * No rule to make target '../Test/myicon.rc', needed by 'debug/myicon_res.o'. Stop. mingw32-make: * [debug] Error 2 02:15:41: The process "C:\TDM-GCC-32\bin\mingw32-make.exe" exited with code 2. Error while building/deploying project Test (kit: Desktop) When executing step 'Make'
qt - 如何翻译默认 qsTr 字段 - 例如 MessageDialog 是/否按钮
我有一个使用 Qt Quick 的小应用程序MessageDialog
。我用命令创建了翻译文件
在 myapp.pro 我指出:
和
所有翻译均正确生成。但我不知道如何为提供的标准按钮生成翻译MessageDialog
。在以下示例中,将生成“警告”和“请选择是或否”的翻译。但我无法为“是”和“否”生成它们(这是StandardButtons
属性的文本值)
我检查了源代码,它表明它们应该被翻译:
我也尝试过手动添加一个条目Yes
,No
但这似乎没有帮助。
我在 stackoverflow 上发现了一个关于将 qml 文件添加到.pro
文件以使其工作的问题,这是我已经做过的事情。我虽然关于添加内置的MessageDialog
,但我不知道如何做到这一点。
最后一点:我知道在 Qt 5.3 中qsTr
's 不在MessageDialog
. 但从 Qt 5.4 开始,它们是。我目前在 Qt 5.5
任何帮助是极大的赞赏。
编辑
发布此内容后,我一直在寻找并发现一个遇到相同问题的人的有趣帖子。不幸的是,那里没有答案。
编辑 2
谢谢 tynn 的回复。我已经尝试了这两种建议,但都没有成功。我也尝试过别的东西。我在我的代码中添加了一个 qDebug 以查看它是否会翻译。我希望相同的翻译随后将用于MessageDialog
,但不幸的是,情况似乎并非如此。
我还尝试从头开始构建一个与内置消息对话框相同的对话框,但目前我对 qml 的了解太有限,无法使其正常工作。
qt - 这是 Qt Quick ComboBox 中的错误吗?
我用来在 Qt QuickQAbstractListModel
中创建自定义模型。ComboBox
头文件中的代码:
源文件中的代码:
我使用以下方法将其公开到 QML 中:
并使用此模型创建一个 ComboBox:
data()
此代码运行完美,但请查看源文件函数中的这一行:
我认为在设置textRole
of之后ComboBox
,显示角色应该命名为“显示”,这是Display
我的自定义模型中的角色m_roleNames.insert(Display, "display");
。但这并不总是正确的。
这是qDebug()<<
上面代码的输出:
1
1
行 0 角色 260 大小 1
显示:“1.8.0_51 64bit”
和
1
1
行 0 角色 0 大小 1
显示:“1.8.0_51 64bit”
两个输出随机出现。您会发现role
传递给data()
函数的参数有时会为零。零角色Qt::DisplayRole
在 Qt中的意思。
所以这是我的问题:如果 set textRole
ofComboBox
意味着data role
设置等于 textRole 的值。为什么data role
有时会变成 Qt::DisplayRole
?它是一个错误ComboBox
吗?
qt - 在 qt 5.5.0 上构建项目时出错
![套件错误][1]
在问题选项卡错误中:
![Qt版本][2]
Qt Creator 需要一个编译器来构建。在套件选项中配置编译器。
编译输出:13:45:05:配置错误。检查问题视图以获取详细信息。
首次构建/部署项目时出错(套件:Desktop Qt 5.5.0 MSVC2013 64bit)执行步骤“Make”时。
qt - 在运行时将 QML Dialog 嵌入到 QDialog 窗口中
我以前从未使用过 QML,也不知道以下是否可行。
我目前正在使用现有代码和大量 UI 文件将 C++ Qt 应用程序移植到 Qt 5.5。此应用程序稍后会在运行时加载大量 C++ 插件 dll。现在每个插件都应该有自己的配置对话框;尽管这些插件目前都没有 Qt 依赖项。
我目前正在考虑使用以下方式扩展接口:
因此,每个插件都可以返回一组关于它希望其配置对话框看起来如何的 QML 数据。
当这个插件应该由用户配置时,这个应用程序显示一个空QDialog
并询问插件“给我你的 qml 配置数据”;然后在 empty 中渲染和执行QDialog
。
这个 QML 数据是否可以在运行时解释并呈现为空的字符串缓冲区或 QML 数据的文件路径QDialog
?
底线:
- QML 可以在运行时这样处理吗?
- 我可以
Dialog
在传统QDialog
窗口中嵌入 QML 描述还是这两种类型不混合? - 这甚至是一个好主意还是我应该做很多不同的事情?:)
qt - 将 Qt5.5 Qml 应用程序部署到 Windows XP 显示一个空白窗口?
我使用 VS2013 构建了一个静态 x86 Qt5.5 库:
配置 -static -prefix D:\Qt\qt-5.5.0-x86-static -opensource -release -static-runtime -nomake examples -no-compile-examples -static-runtime -nomake tools -no-iconv -qt- zlib -skip qtwebkit -confirm-license -qmake -opengl 桌面 -no-angle -nomake 测试 -target xp
之后,我使用这个静态库构建了我的 Qml 应用程序的静态链接 exe。它可以在我安装了Qt5.5的windows中随处运行。
然后我用 VMware Workstation 安装了一个纯 Windows XP SP3 只安装了 VC2008 运行时而不是 VC2013 运行时。
首先,我将exe复制到这个XP中。它可以运行,但没有任何显示。我需要在 taskmgr 中杀死它。
其次,我将所有文件夹复制D:\Qt\qt-5.5.0-x86-static\qml
到我的exe的根目录中,它可以运行。但它只显示了一个带有正确窗口标题的空白窗口。
我想我已经听取了Deploying Qt 5 App on Windows中的所有建议。但是为什么qml部分不能编译成静态库呢?如何让我的应用程序不显示空白?
PS 即使我windeployqt
用来部署应用程序的共享链接库版本。它还向我显示了空白窗口。但它可以在 Windows 7 上运行。
qtdiag 在我的虚拟 XP 上的输出:
Qt 5.5.0 (i386-little_endian-ilp32 static release build; by MSVC 2013) on "window ws" OS: Windows XP [winnt version 5.1.2600]
架构:i386;特点:SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
库信息: PrefixPath: D:\Qt\qt-5.5.0-x86-static
DocumentationPath: D:\Qt\qt-5.5.0-x86-static\doc HeadersPath: D:\Qt\qt-5.5.0- x86-static\include LibrariesPath: D:\Qt\qt-5.5.0-x86-static\lib LibraryExecutablesPath: D:\Qt\qt-5.5.0-x86-static\bin BinariesPath: D:\Qt\qt- 5.5.0-x86-static\bin PluginsPath: D:\Qt\qt-5.5.0-x86-static\plugins ImportsPath: D:\Qt\qt-5.5.0-x86-static\imports Qml2ImportsPath: D:\ Qt\qt-5.5.0-x86-static\qml ArchDataPath: D:\Qt\qt-5.5.0-x86-static DataPath: D:\Qt\qt-5.5.0-x86-static
TranslationsPath: D:\ Qt\qt-5.5.0-x86-static\translations
ExamplesPath: D:\Qt\qt-5.5.0-x86-static\examples TestsPath: D:\Qt\qt-5.5.0-x86-static\tests SettingsPath :标准路径 [ ...表示可写条目]: DesktopLocation: "Desktop" *C:\Documents and Settings\Administrator\
最后的结论:问题是我的虚拟Windows XP中的图形驱动程序。它可以在其他真实PC上运行。
但是 QML 的静态构建存在一个可悲的问题。我发现了这个:
https ://forum.qt.io/topic/22035/qml-apps-not-runnable-using-static-build-up-to-qt-5-0-1-release/24
原因为什么我需要复制这样的文件夹Qt
QtQuick.2
QtQuick
是那些库不能编译加载。即使我将它们添加到 .pro 文件中。从 Qt 5.0 到 Qt 5.5。官方方面似乎不喜欢人们通过静态链接使用 QML。因此,静态构建 QML 应用程序是浪费时间。
qt - 嵌套 MouseArea 悬停
我遇到了嵌套MouseArea
s 的问题。当我单击红色Rectangle
时,它会触发exited
顶部的事件Rectangle
(至少对我而言)。这是预期的行为吗?如果是这样,是否有解决方法?
编辑
澄清
我想要的是能够Rectangle
在单击孩子时保持悬停在顶部Rectangle
(顶部Rectangle
应该保持blue
)。如果我想在悬停时隐藏和取消隐藏按钮等,这很有用,这是 Web 界面 (HTML/CSS) 中的常见做法。现在这样做会导致奇怪的效果,因为单击entered
信号显示的按钮会在您单击它们时消失。
编辑
我用想要的行为做了一个 Javascript 演示: https ://jsfiddle.net/uo4vousu/ 即使你点击红色矩形,父级保持蓝色,这就是我想要的。在 QML 示例中,父级变为绿色。我更新了 QML 代码以匹配 jsfiddle。
编辑
这可能是一个 linux 唯一的问题。
这是一个例子:
c++ - QT QWebEnginePage::setWebChannel() 传输对象
我正在使用 QT WebEngine 框架来显示网页。我在加载时将 javascript 注入页面,并希望允许 javascript 能够访问 QT 对象。显然,要做到这一点,必须存在一个在铬(javascript)和我的 C++/QT 项目的其余部分之间建立一些 IPC 的 QWebChannel。我遇到了 QWebEnginePage::setWebChannel (QWebChannel *channel) 函数,但是我找不到任何使用它的例子。文档(http://doc.qt.io/qt-5/qwebenginepage.html#setWebChannel)提到 qt.webChannelTransport 应该在 javascript 上下文中可用,但我没有看到在 qwebchannel.js 中建立的位置(https://github.com/qtproject/qtwebchannel/blob/dev/src/webchannel/qwebchannel.js)。一世'http://doc.qt.io/qt-5/qtwebchannel-examples.html ) 并且希望尽可能避免使用 WebSockets。
以下是我尝试实现网络频道的方式。
每当页面加载时,我都会建立一个通道并在 C++ 中注入 javascript:
在 Javascript 中:
这导致通道没有正确连接(假设这是因为 qt.webChannelTransport,因为它在我使用 WebSockets 时正在工作)。任何指向以这种方式使用 QWebEnginePage 设置的 QWebChannel 示例的指针也值得赞赏。
qtwebengine - QWebEnginePage::toHtml 返回空字符串
我想在类被销毁之前保存一个 QWebEnginePage 。运行时,输出为:
QWebEnginePage::toHtml 否则返回页面的正确内容,无论它是否在 QWebEngineView 中设置。
书签管理器.h
书签管理器.cpp