我不明白QImage和QPixmap有什么区别,它们似乎提供了相同的function。 什么时候应该使用QImage,什么时候应该使用QPixmap?
我有一个关于数据库的问题,在什么地方值得深入研究。 我主要是一名embedded式工程师,但是我正在编写一个使用Qt与我们的控制器进行交互的应用程序。 我们有一个奇怪的地方,就是我们有足够的数据可以实现一个数据库(大约700多个项目和不断增长)来pipe理所有的事情,但我不知道现在是否值得现在处理。 使用从excel生成的文件和parsing的文件实现GUI是没有问题的,但是即使使用VBA脚本,也很难跟踪。 我一直在玩转换我们的数据到Microsoft Access的应用程序方面更可pipe理,似乎运作良好。 如果解决了这个问题,我只需要使用SQL数据库和使用Qt库来访问和修改它。 我没有太多的经验来pipe理这个级别的数据,我很好奇什么是解决这个问题的最好方法。 那么在这种情况下使用数据库有什么好处呢? 我意识到这其中的大部分都可以是特定于应用程序的,但是关于如何跨越embedded式/应用程序编程线的一些总体思路和build议将会有所帮助。 这不是关于将数据库放入embedded式项目。 这也不是一个通常使用大型数据库的业务types应用程序。 我正在为桌面上的单个用户devise一个GUI,以便与微控制器进行交互以进行监视和configuration。 我决定去与SQLite。 你可以用一些非常有意思的事情来做这些事情,但是在第一次启动这个项目时,我并没有真正考虑过这个选项
我想从另一个QString获取QString ,当我知道必要的索引。 例如:主要string: “这是一个string” 。 我想从前5个符号创build新的QString并获得“This” 。 input:第一个和最后一个字符编号。 输出:新的QString 。 如何创build它? PS不仅前几个字母,也从中间,例如从5到8。
为什么关于Qt库的官方示例和教程从来没有使用智能指针? 我只看到new和delete创build和销毁小部件。 我search了基本原理,但是找不到它,除了出于历史原因或向后兼容性之外,我没有看到它自己。不是每个人都希望程序在widget构造函数失败时终止,并通过try / catch块是丑陋的(即使在less数地方使用)。 家长小部件可能拥有孩子的所有权也只是部分地解释了我的事情,因为您仍然必须在某个级别上使用delete父母。
我正在玩Qt ,我想在两个命令之间创build一个简单的停顿。 但是,似乎不让我使用Sleep(int mili); ,我找不到任何明显的等待function。 我基本上只是做一个控制台应用程序来testing一些类的代码,这些代码稍后将包含在一个合适的Qt GUI中,所以现在我不打扰整个事件驱动模型。
我认为图书馆需要用特殊工具预处理我的源代码是不合理的。 也就是说,有几个人向我推荐了Qt库进行跨平台的GUI开发。 没有预处理步骤,Qt的可用性如何? 编辑:好的人,我不是意味着这个问题作为对Qt的裂口 – 太多的Qt粉丝正在对待它,就好像它是。 我不想讨论Qt提出这个预处理工具的优点。 我明白为什么这个工具就在那里,而且我明白为什么Qt的devise有很大一部分是build立在预处理的基础上的。 我从来没有使用过Qt,所以我没有任何权利去解决这个问题。 但是我更愿意自己写小量的样板文件,而不是依靠把整个构build过程拆开。 我不会因为同样的原因在我现在的项目中使用Flex和Bison。 如果我不使用这些工具,我绝对不会使用另一种预处理。 所以,请不要把我当作Qt的翻版。 我无法评论它有多好或不好; 我没有用过 我只是想知道是否有可能使用它没有moc 。
Qt文档指出信号和插槽可以是direct , queued和auto 。 它还指出,如果拥有插槽的对象“生活”在一个与拥有信号的对象不同的线程中,发送这样的信号就像是发送消息 – 信号发送将立即返回,在目标线程的事件循环中将调用slot方法。 不幸的是,文档没有说明“生命”是什么,也没有可用的例子。 我已经尝试了下面的代码: main.h: class CThread1 : public QThread { Q_OBJECT public: void run( void ) { msleep( 200 ); std::cout << "thread 1 started" << std::endl; MySignal(); exec(); } signals: void MySignal( void ); }; class CThread2 : public QThread { Q_OBJECT public: void run( void ) { […]
QThread的Qt文档说从QThread创build一个类,并实现run方法。 以下是取自4.7 Qthread文档… 要创build自己的线程,创build子类QThread并重新实现run()。 例如: class MyThread : public QThread { public: void run(); }; void MyThread::run() { QTcpSocket socket; // connect QTcpSocket's signals somewhere meaningful … socket.connectToHost(hostName, portNumber); exec(); } 所以在我创build的每一个线程中,我已经完成了这个工作,对于大多数事情来说它工作得很好(我没有在我的任何对象中实现moveToThread(this),而且效果很好)。 上周我遇到了一个麻烦(设法通过在我创build我的对象的地方工作来解决这个问题),并发现了以下博客post 。 这里基本上说,子类化QThread真的不是正确的方法来做到这一点(和文档是不正确的)。 这是来自Qt开发人员,所以乍一看我感兴趣,经过进一步思考,同意他的观点。 遵循面向对象的原则,你真的只想要inheritance一个类,以进一步增强这个类…不只是直接使用类的方法…这就是为什么你实例… 比方说,我想移动一个自定义的QObject类到一个线程…什么是“正确”的方式呢? 在那个博客文章中,他说:“他有一个例子,但如果有人可以进一步向我解释它,将不胜感激! 更新: 由于这个问题得到了如此多的关注,下面是4.8文档的复制和粘贴,以“适当”的方式来实现一个QThread。 class Worker : public QObject { Q_OBJECT QThread workerThread; public slots: void doWork(const QString […]
我试图部署(发布到公众)一个简单的QT应用程序,我最近做的,但卡在静态链接QT库。 我按照qt文档指南来重新构buildqt和我的应用程序静态。 但发布版本仍然需要qtgui / qtcore dll没有明显的原因,不知有没有人见过这种types的问题? 甚至更好,已经成功解决了吗? http://doc.qtsoftware.com/4.5/deployment-windows.html
如何检查文件是否存在于给定的path或不在Qt? 我目前的代码如下: QFile Fout("/Users/Hans/Desktop/result.txt"); if(!Fout.exists()) { eh.handleError(8); } else { // …… } 但是,当我运行代码时,即使我在path中提到的文件不存在,也不会在handleError指定错误消息。