Tag: qt

隐藏Windows应用程序的控制台

我有一个Qt应用程序,当我运行这个应用程序,有一个控制台后面打开。 在开发中,它是很好,因为我看到在控制台上的debugging输出,但是当我想给这个客户可执行文件应该没有控制台窗口。 我如何隐藏它? (我正在使用Visual Studio 2008)

如何configurationQt从Linux到Windows目标的交叉编译?

我想交叉编译Qt库(最终是我的应用程序)使用Linux x86_64主机的Windows x86_64目标。 我觉得我很接近,但是我可能对这个过程的某些部分有一个根本性的误解。 我开始在我的Fedora机器上安装所有的mingw包,然后修改win32-g++ qmake.conf文件以适合我的环境。 不过,我似乎被Qt: -platform和-xplatform一些看似明显的configuration选项卡住了。 Qt的文档说,平台应该是主机架构(你正在编译的地方),- -xplatform平台应该是你希望部署的目标平台。 在我的例子中,我设置了-platform linux-g++-64和-xplatform linux-win32-g++ ,其中linux-win32-g ++是我修改的win32-g ++configuration。 我的问题是,执行configuration这些选项后,我看到它调用我的系统的编译器,而不是交叉编译器(x86_64-w64-mingw32-gcc)。 如果我省略-xplatform选项并将-platform设置为我的目标规范(linux-win32-g ++),那么它会调用交叉编译器,但是如果发现某些与Unix相关的函数没有定义,则会发生错误。 以下是我最近一次尝试的一些输出: http : //pastebin.com/QCpKSNev 。 问题: 当从Linux主机交叉编译类似Qt for Windows的应用程序时, 是否应该调用本地编译器? 也就是说,在交叉编译过程中,我们不应该只使用交叉编译器吗? 当我指定-xplatform选项时,我不明白为什么Qt的configuration脚本会尝试调用我的系统的本机编译器。 如果我正在使用mingw交叉编译器,那么我何时需要处理规格文件? 海湾合作委员会的规格文件仍然是我的一个谜,所以我想知道如果这里的一些背景将帮助我。 一般来说,除了在我的qmake.conf中指定一个交叉编译器之外,我还需要考虑什么呢?

未定义的引用vtable。 试图编译一个Qt项目

我使用的是Code :: Blocks 8.02和mingw 5.1.6编译器。 编译我的Qt项目时出现这个错误: C:\ Documents and Settings \ The Fuzz \ Desktop \ GUI \ App_interface.cpp | 33 |对AddressBook的vtable的未定义引用 文件AddressBook.h: #ifndef ADDRESSBOOK_H #define ADDRESSBOOK_H #include <QWidget> class QLabel; class QLineEdit; class QTextEdit; class AddressBook : public QWidget { Q_OBJECT public: AddressBook(QWidget *parent = 0); private: QLineEdit *nameLine; QTextEdit *addressText; }; #endif 文件AddressBook.cpp: […]

Q_OBJECT抛出'未定义的引用vtable'错误

我在Windows 7 Ultimate 32位上使用Qt Creator 2.0.1和Qt 4.7.0(32位)。 考虑下面的代码,这是产生错误的最小值: class T : public QObject, public QGraphicsItem { Q_OBJECT public: T() {} QRectF boundingRect() const {return QRectF();} void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {} }; int main() { T t; return 0; } 上面的代码片段导致以下链接器错误: 在函数“T”中: 未定义的引用'vtable for T' 未定义的引用'vtable for T' 在函数'〜T'中: 未定义的引用'vtable for T' […]

如何添加“-std = c + + 11”到由qmake生成的生成文件?

我正在开发一个Qt程序。 它的makefile是从.pro文件自动生成的。 我需要使用一些需要为g ++设置-std = c ++ 11标志的代码。 .pro应该在哪里添加这个标志? (只改变Makefile将不会工作,因为它被新生成的,每次我build立项目覆盖)。

Qt中的C ++ SIGNAL到QML SLOT

我想发送一个信号从C ++到我的QML文件中的一个槽。 我已经得到它没有和原始types参数工作,但如果我想发送一个QString到我的QML插槽,我会在连接时出错。 我在main.cpp连接 QObject *contentView = rootObject->findChild<QObject*>(QString("contentView")); QObject::connect(&myObj, SIGNAL(finishedGatheringDataForItem(QString)), contentView, SLOT(updateViewWithItem(QString))); 我的qml文件的相关部分 Rectangle { objectName: "contentView" function updateViewWithItem(string) { console.log('got some Items'); } // slot } 错误: Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)

Qt:单一实例应用程序保护的最佳做法

QSingleApplication ? QMutex ? QSharedMemory ? 我正在寻找能在Windows,OSX和Linux(Ubuntu)上顺利运行的东西。 使用Qt 4.7.1

Q_OBJECTmacros是做什么的? 为什么所有的Qt对象都需要这个macros?

我刚开始使用Qt,并注意到所有示例类定义都将macrosQ_OBJECT作为第一行。 这个预处理macros的目的是什么?

如何redirectqDebug,qWarning,qCritical等输出?

我正在使用大量的qDebug() <<语句来debugging输出。 有没有任何跨平台的方式,我可以redirect到debugging输出到一个文件,而不诉诸壳shell脚本? 我猜测open()和dup2()会在Linux中完成这个工作,但是它能在Windows下用MinGW编译吗? 也许有一个Qt的方式来做到这一点?

非阻塞的工作人员 – 中断文件副本

我正在处理非常大的文件,超过几百GB的大小。 用户需要能够在磁盘之间移动这些文件,并且位于没有默认文件pipe理器的受限系统上。 用户可能意识到他们犯了错误并取消了操作,并且据我所知,用户将不得不等待当前的复制或重命名操作才能完成。 这可能让他们感到沮丧,因为他们等待几分钟,只能看到他们的许多GB文件仍然被复制。 在复制的情况下,我可以删除第二个文件,但在重命名的情况下,我正在使用移动文件,我不得不重复操作反向撤消它,这是根本不能接受的。 有没有办法打断我没有在QFile的文档中看到copy()和rename(),或者我需要把我自己的类放在一起来处理复制和重命名?