Tag: qt

如何使项目视图渲染丰富(html)文本在Qt中

假设我的模型有Qt :: DisplayRolestring <span>blah-blah <b>some text</b> other blah</span> 我想要QTreeView(实际上,任何项目视图)呈现它像一个丰富的文本。 相反,项目视图默认情况下将其呈现为纯文本。 如何实现所需的渲染? 其实这是一个search结果模型。 用户input一个文本,对该文本search一些文档,并向用户显示search结果,其中被search的单词应该比周围的文本更大胆。

如何将opencv cv :: Mat转换为qimage

我想知道如何将OpenCV C ++标准cv :: Mattypes转换为Qimage。 我一直在四处寻找,但没有运气。 我发现一些代码将IPlimage转换为Qimage,但这不是我想要的。 谢谢

连接Qt 5中的过载信号和插槽

我在使用Qt 5中的新信号/插槽语法(使用指向成员函数的指针)时遇到了困难,如新信号插槽语法中所述 。 我试着改变这个: QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)); 对此: QObject::connect(spinBox, &QSpinBox::valueChanged, slider, &QSlider::setValue); 但是当我尝试编译它时遇到错误: 错误:没有匹配函数调用QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int)) 我已经在Linux上用clang和gcc尝试过了,都用-std=c++11 。 我做错了什么,我该如何解决?

如何构buildVisual Studio 2010的Qt

我努力寻找一种方法,它为在Visual Studio 2010中使用Qt提供了一个稳定的解决scheme,因此,在收集了所有信息和一些试验和错误之后,我想将我的解决scheme写入指南。 这个问题,或为什么不能使用预先构build的二进制文件? 似乎使用为Visual Studio 2008构build的二进制文件可能在某些特殊情况下工作,但我发现它们不起作用。 在我的情况下,他们编译好,但他们会产生运行时错误,如下所示: 或从Visual Studio 2010启动时: 更新 :我发现了一篇博客文章,分析了为什么它对一些人有用,而对别人没有帮助。 总之,这取决于您是否在同一台机器上安装了Visual Studio 2008。 http://blog.paulnettleship.com/2010/11/11/troubleshooting-visual-studio-2010-and-qt-4-7-integration/ 最重要的事情(我愚蠢地没有意识到)是,如果你没有安装Visual Studio 2008,你不能使用Visual Studio 2008编译的库和DLL(在Qt网页上可用)。 原因是你下载的Qt SDK是一个依赖于VC9.0 DebugCRT的debugging版本,这意味着它需要安装Visual C ++ 2008 Debug Runtime,这个版本不能作为可再发行的安装程序使用。 安装DebugCRT的唯一方法是安装整个Visual Studio 2008。

如何创build用于QML的通用对象模型?

我想知道是否有任何macros或方式如何注册Qt模型作为QObject的属性。 例如,我有AnimalModel ( http://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel )。 我知道我可以将它传递给QuickView的根上下文 QuickView view; view.rootContext()->setContextProperty("myModel", &model); 如果我有通过Qmlmacros注册的QObject,我也可以通过这个对象来查看: view.rootContext()->setContextProperty("obj", pDataObject); 但是如果我想要拥有包含任何数据模型的QObject? 例如: class DataObject : public QObject { Q_OBJECT Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged) … AnimalModel m_modelAnimals; //Is this possible in any way? //Q_PROPERTY(AnimalModel modelAnimals READ modelAnimals NOTIFY modelAnimalsChanged) }; 我发现的每个例子都显示了如何将QAbstractListModel传递给根上下文。 […]

如何在QtCreator中连接opencv并使用Qt库

这个问题必须重复多次,但是它不起作用,有时候还是没有答案。 信息来源主要是这些 http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml http://www.youtube.com/watch?v=dgcXYQijV6c 这是我认为应该/可以做的事情的总和。 (现在它适用于我。)希望我从一开始就提到一切,目的是写一个非常明确的教程。 为QtCreator安装OpenCV 我已经安装了MS Visual Studio 2010 Professional。 (作为学生我有一个免费的许可证) – 我认为这不是必要的,只是一提 下载: Qt 5.0.1 for Windows 32位(MinGW 4.7,823 MB) 2.1 安装:警告,Qt使用的所有东西(例如OpenCV)必须位于名称中不包含空格的目录中。 – 即“程序文件”是错误的。 (但是我不想让不同的程序文件直接在C上累积,所以我只创build了一个“程序”文件夹,在这个文件夹中安装了所有重要的东西) 下载: cmake-2.8.10.2-win32-x86.exe – 为所有用户安装(可以在Program Files中) 下载: OpenCV-2.4.0.exe,提取到: C:\ Programs \ opencv24 – 它会创build一个目录“opencv”; 添加另一个文件夹“opencv_bin”。 现在看起来像这样: C:\程序\ opencv24 \ OpenCV的* C:\程序\ opencv24 \ opencv_bin 设置PATH环境variables ,以便有一个到MinGW编译器的链接。 例如C:\ Programs […]

把一个参数传给一个槽

我想用一堆QActions和QMenus来重写mouseReleaseEvent … connect(action1, SIGNAL(triggered()), this, SLOT(onStepIncreased())); connect(action5, SIGNAL(triggered()), this, SLOT(onStepIncreased())); connect(action10, SIGNAL(triggered()), this, SLOT(onStepIncreased())); connect(action25, SIGNAL(triggered()), this, SLOT(onStepIncreased())); connect(action50, SIGNAL(triggered()), this, SLOT(onStepIncreased())); 所以我想传递一个参数到onStepIncreased (你可以想象它们是1,5,10,25,50)。 你知道我该怎么做吗?

检测标准input是一个terminal或pipe道?

当我从terminal执行“ python ”而没有参数的时候,它会popupPython交互式shell。 当我从terminal执行“ cat | python ”时,它不会启动交互模式。 不知何故,没有得到任何input,它已经检测到它连接到pipe道。 我如何做类似的检测在C或C + +或Qt?

如何使用Qt的PIMPL成语?

PIMPL代表执行进程 。 实现代表“实现细节”:类的用户不需要关心的东西。 Qt自己的类实现通过使用PIMPL惯用语将接口与实现完全分开。 然而,由Qt提供的机制没有logging。 如何使用它们? 我想这是关于“我如何PIMPL”在Qt的规范问题。 答案将由下面显示的一个简单的坐标input对话框界面来激励。 当我们有一个半复杂的实现时,使用PIMPL的动机变得明显。 进一步的动机在这个问题上给出。 即使是一个相当简单的类也必须在其接口中引入大量其他头文件。 基于PIMPL的界面相当干净可读。 // CoordinateDialog.h #include <QDialog> #include <QVector3D> class CoordinateDialogPrivate; class CoordinateDialog : public QDialog { Q_OBJECT Q_DECLARE_PRIVATE(CoordinateDialog) #if QT_VERSION <= QT_VERSION_CHECK(5,0,0) Q_PRIVATE_SLOT(d_func(), void onAccepted()) #endif QScopedPointer<CoordinateDialogPrivate> const d_ptr; public: CoordinateDialog(QWidget * parent = 0, Qt::WindowFlags flags = 0); ~CoordinateDialog(); QVector3D coordinates() const; Q_SIGNAL void […]

在Windows上部署Qt 5应用程序

我已经在QML中编写了几个应用程序(Qt 5的一部分)。 在我之前提出的问题中( https://softwareengineering.stackexchange.com/questions/213698/deploying-qt-based-app-on-mac-os-x ),我find了部署我的应用程序的解决schemeOS X(使用macdeployqt工具)。 在Windows上部署Qt4应用程序非常简单: 你编译它在发布模式。 您复制了必要的库(DLL)。 你testing过,它的工作。 不幸的是,这种方法在Qt5中无法正常工作(我甚至在qwindows.dll文件中包含了平台文件夹,但它不起作用)。 经过几天的尝试,我放弃了编译Qt5的静态版本。 再次,它没有工作。 该应用程序在安装了Qt的PC上运行,但是在“干净的”PC上崩溃。 作为一个侧面说明,Windows 8 / 8.1系统不会给出关于应用程序崩溃的警告或消息。 但是在Windows 7中,有消息告诉我应用程序崩溃了。 我试过运行Dependency Walker(depend.exe),我的应用程序的静态构build中的所有库看起来都很好。 在Windows 8中,我没有得到任何错误。 但是在使用depends.exe分析应用程序之后,我得到了源自QtGui.dll的访问冲突。 确切的错误是 地址0x61C2C000处的“QT5GUI.DLL”中发生第二次机会exception0xC0000005(访问冲突)。 有什么,我失踪(说一个额外的DLL或configuration文件)? 申请信息: 用Qt 5.2.1编写和编译 使用Quick / QML。 使用networking模块。 使用webkit模块。 使用蓝牙模块。 QML文件是用Quick 2.2编写的