我问这个的原因是因为我看过这个页面,但是我找不到从下载页面下载的Mac OSX二进制文件.有一个特殊的地方可以得到它们.
我正在创建Qt Installer一些QT应用程序,当我在某些时候通过Qt安装程序框架手册时,我发现朗姆酒请看图像binarycreator
,但我无法找到该二进制文件Qt SDK,请任何人都可以帮忙.
当我使用QtWebkit(内部使用QSslSocket)连接到www.hotmail.com时,登录后出现以下ssl错误:
登录前我可以在mail.yahoo.com上遇到相同的错误.我发现与这两个服务器的安全连接会触发ssl错误:
QT附带了一个名为securesocketclient的小型ssl演示程序.如果我使用这个小客户端连接到上述两个服务器的端口443,我可以产生相同的错误.我99%肯定这是QT的一个错误,因为我们在许多开发系统上产生了这个问题.它会影响linux,mac和windows QT.它影响QT 4.7.4一直到QT 4.8.4(没有尝试早期版本).使用openssl 0.9.8复制该错误.
有些人可能错误地声称使用带有预编译QT二进制文件的openssl 1.0.0修复了该错误.这是错误的,因为预编译的QT二进制文件是使用openssl 0.9.8头文件编译的.Openssl 0.9.8与openssl 1.0.0不是二进制兼容的.如果使用一个版本的openssl编译QT但使用另一个版本的openssl二进制文件,一些结构成员将被误解.我做了很多步骤和跟踪到QT和openssl源代码来得出这个结论.
由于hotmail和yahoo电子邮件是非常受欢迎的网站,我认为这个bug在QT的安全性方面是一个严重的错误.我已经将它报告给QT bug系统(https://bugreports.qt.io/browse/QTBUG-23625),我怀疑digia是否会根据我过去的经验得到它.
请随时分享您对如何解决此错误的看法.我知道如何调用ignoreSslErrors并假装没有问题.但这并不是打算如何使用openssl.
有关此问题的进一步调查的一些更新.
https://gfx8.hotmail.com的证书路径是:
根CA确实位于Windows证书存储区中,并在启动时正确加载.我想也许不知何故QT没有获得中间证书.我使用openssl命令行程序运行测试,如下所示:
openssl s_client -showcerts -connect gfx8.hotmail.com:443
输出在这里:
CONNECTED(000001AC)depth = 0 1.3.6.1.4.1.311.60.2.1.3 = US,1.3.6.1.4.1.311.60.2.1.2 = Washington,bu sinessCategory = Private Organization,serialNumber = 600413485,C = US,postalC ode = 98052,ST = Washington,L = Redmond,street = 1 Microsoft Way,O = Microso ft Corporation,OU = Windows Azure CDN,CN = gfx-ecn.hotmail.com …
唯一的问题是纠正,QPrintPreviewDialog但当打印在纸上打印时,故障仍然存在.
随着QPrintPreviewDialog网页的工作完美,但"纸"(纸打印)从第二页"文本"和"图像"(无背景)消失(显然是错误只发生(即除第一个出现的BUG所有页面)内联元素).
请参阅:https: //bugreports.qt.io/browse/QTBUG-37240(请参阅测试用例的附件)
打印带有小字体和图像的QWebView的第一页.
显然,只有内联元素(文本和图像)才会出现问题.
注意:该错误发生在Windows XP,Windows 7,Window 7 x64,Mac OS X 10.8.3中
[编辑]
Source-html:http://jsfiddle.net/bdm6Y/2/
框架内容:http://jsfiddle.net/bdm6Y/2/show/

资源:
QPrinter p;
p.setPaperSize(QPrinter::A4);
p.setFullPage(true);
p.setResolution(300);
p.setOrientation(QPrinter::Portrait);
QPrintPreviewDialog preview(&p);
preview.setWindowTitle(ui->myWebView->page()->mainFrame()->title());
connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printPreview(QPrinter*)));
preview.exec();
...
void printPreview(QPrinter *printer) {
ui->myWebView->print(printer);
}
Run Code Online (Sandbox Code Playgroud)
我不知道这是一个错误还是我做错了什么,它会是什么?
谢谢!
[编辑]
QT错误报告:
我想从11 字节数据中识别车轮和曲柄传感器数据。我试图按照下面链接中的拆分来解析我在我们的移动应用程序中获得的 11 字节十六进制数据。
例如,我尝试了以下方法,
十六进制数据:0x03 6D010000 FC7E 2C01 F87E
Flag-03 ->0000 0011 -> 8bits 所以两者都是真的,因此我们可以得到车轮和曲柄各自的值。
累积车轮转数- 6D 01 00 00 -> 32 位,因此将其转换为十进制我们得到 -1828782080
最后一个轮子事件时间 - FC 7E -> 16 位,因此我们将其转换为十进制 - 64638
累积曲柄转数 - 2C 01 -> 16 位,因此将其转换为十进制我们得到 - 11265
上次曲柄事件时间 - F8 7E -> 16 位,因此我们将其转换为十进制 - 63614
我无法从 BLE 获得实际的车轮和曲柄测量值。我从我遵循的参考链接中了解到的上述程序是否正确?还是我在其他地方错了?我已尽最大努力剖析和解析数据,但不幸的是我无法找到解决方案。请指导我完成这个过程。我们必须做什么才能获得正确的价值?就像我应该用某个数字乘以它吗?我尝试过不同的组合但无法获得。我使用的设备是SunDing515 自行车速度和踏频传感器,带有蓝牙低功耗。
我有一个QListWidget,我想用自定义小部件添加一堆项目:
listWidget = QListWidget()
item = QListWidgetItem()
item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
item.setCheckState(Qt.Unchecked)
listWidget.addItem(item)
widget = MyLabelAndPushButton()
item.setSizeHint(widget.sizeHint())
listWidget.setItemWidget(item, widget)
Run Code Online (Sandbox Code Playgroud)
顾名思义,MyLabelAndPushButton只是一个在布局中包含QLabel和QPushButton的小部件.问题是我无法使用窗口小部件旁边的listwidget中显示的复选框.它看起来完全正常,但是当我点击它时没有任何反应.如果我用setItemWidget删除该行,它可以正常工作.我究竟做错了什么?
编辑:
在bugreports.qt.io/browse/QTBUG-16386上报告了错误,但得到了答复"API不是为你打算做的而设计的"和"如果你想显示自定义小部件,请使用QListView和子类QItemDelegate." 显然它不是一个bug,只是API无法处理的东西.
我最近转移到 Mac OS X 并注意到我的一个应用程序中的对话框看起来有点奇怪...我有几个对话框基本上是具有可配置路径的简单形式:
标签:<QLineEdit> <QPushButton (opens file dialog)>
标签: ...
对话框以 QGridLayout 组织,在 Ubuntu 上看起来不错:

在 Mac OS X 上,QPushButtons 行下方有一个很大的空白区域,这使得整个事情看起来很奇怪:

我发现这个错误报告显然已悄然关闭: https: //bugreports.qt.io/browse/QTBUG-2699
用户界面代码:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>431</width>
<height>235</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>PDF Export</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/images/images/application-pdf.png</normaloff>:/images/images/application-pdf.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QLineEdit" name="texPath">
<property …Run Code Online (Sandbox Code Playgroud) 枚举对我不起作用.
Q_ENUMS()Q_OBJECT宏qmlRegisterType()简而言之,一切都是"按书",但由于某种原因,我继续获得undefinedQML中的每一个枚举.我错过了什么吗?
class UI : public QQuickItem {
Q_OBJECT
Q_ENUMS(ObjectType)
public:
enum ObjectType {
_Root = 0,
_Block
};
...
};
Run Code Online (Sandbox Code Playgroud)
...
qmlRegisterType<UI>("Nodes", 1, 0, "UI");
Run Code Online (Sandbox Code Playgroud)
...
import Nodes 1.0
...
console.log(UI._Root) // undefined
Run Code Online (Sandbox Code Playgroud)
编辑:另请注意,注册的枚举确实可用于元系统,由于某些原因它们不能用于QML.
更新:我刚刚发现了这个错误:https://bugreports.qt.io/browse/QTBUG-33248
但是与那个错误不同,我的root组件是一个UI不是自定义元素UI的根目录.
事实证明,实际上可以使用QML形式的枚举值console.log(),以下代码实际上正在工作.
class A : public QObject {
Q_OBJECT
Q_ENUMS(EA)
public:
enum EA {
EA_NULL = 0,
EA_ONE
};
};
class B : public A …Run Code Online (Sandbox Code Playgroud) 我使用Qt Installer framework 1.5
安装完成后,我想在桌面上添加一个快捷方式.
在我的文件installscript.qs中,我试过:
Component.prototype.createOperationsForPath = function()
{
if (installer.value("os") === "win")
{
try {
component.addOperation("CreateShortcut", "@TargetDir@/App.exe", "@DesktopDir@/App.lnk");
}
catch (e) {
print(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,没有创建快捷方式,我没有任何错误消息.互联网上的文档非常简单.
任何的想法 ?谢谢
我们公司希望通过我们的CI服务器开始触发我们的QUnit单元测试,并将PhantomJS作为实现这一目标的手段.我们首先尝试通过以下脚本以幻像打开几个我们的QUnit测试页面:
var page = require('webpage').create();
var args = require('system').args;
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.onError = function(msg, trace) {
var msgStack = ['ERROR: ' + msg];
if (trace) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function + '")' : ''));
});
}
console.error(msgStack.join('\n'));
}; …Run Code Online (Sandbox Code Playgroud) 我是Linux和QtCreator的新手.我有许多具有不同名称的cpp文件,它们都具有主要功能.但我不知道如何逐个运行这些cpp文件.我还需要在运行它们时配置参数.我假设Qt Creator不允许编译和运行具有随机名称的单个cpp文件.但是,在这里:https://bugreports.qt.io/browse/QTCREATORBUG-106,它说,这个问题就迎刃而解了.但我仍然无法找到如何做到这一点.
对于通过Qt Creator创建的C++项目,我发现只需要单击绿色箭头,然后将编译并运行Sources文件夹下的main.cpp.但我目前使用的项目是我从Internet下载的C++项目(GraphChi).文件和文件夹的结构与通过Gt Creator创建的结构完全不同.没有cpp文件"main.cpp",但是有许多单个cpp文件,其中包含算法名称,每个文件都有一个主函数.
我只是不知道如何逐个或一起编译它们,并运行它们中的任何一个.
我已经基于具有多个组件的Qt安装程序框架创建了一个安装程序包.我需要在适当的目录中安装每个组件.
是否可以为单个组件指定目标目录?我指的是这样的事情:
var appData = installer.environmentVariable("AppData");
if (appData != "")
component.setValue("TargetDir", appData+ "/MyComponent");
Run Code Online (Sandbox Code Playgroud)
先感谢您.
在Qt安装程序框架中,所有演示都具有TargetDir(例如,用于Windows)将应用程序放置在其中的规范C:\InstallationDirectory.如何将其默认为Program Files?
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>Your application</Name>
<Version>1.2.3</Version>
<Title>Your application Installer</Title>
<Publisher>Your vendor</Publisher>
<StartMenuDir>Super App</StartMenuDir>
<TargetDir>@RootDir@InstallationDirectory</TargetDir>
</Installer>
Run Code Online (Sandbox Code Playgroud) qt ×11
qt-installer ×4
c++ ×3
macos ×2
python ×2
android ×1
android-ble ×1
gatt ×1
linux ×1
openssl ×1
phantomjs ×1
pyqt ×1
pyside ×1
python-3.x ×1
qlistwidget ×1
qmake ×1
qml ×1
qprinter ×1
qpushbutton ×1
qt-creator ×1
qt-signals ×1
qt4 ×1
qtquick2 ×1
qtwebkit ×1
qwebkit ×1
qwebview ×1
ssl ×1