Articles of qt

驱动程序CH341 USB适配器串行端口或QSerialPort不适用于Linux

以下代码在Windows中正确工作,但Linux不起作用。 我使用的是同一台PC,两种操作系统都是本机安装的。 我不使用虚拟机。 我需要在Linux上工作。 我已经尝试在不同的Linux发行版,并不能在任何地方工作。 // In the main class: QSerialPortInfo info = XXXX; // Generally in Linux: /dev/ttyUSB0, in win: COM1 QSerialPort serial; QObject::connect(&serial, SIGNAL(readyRead()), this, SLOT(onReadyRead()), Qt::DirectConnection); QObject::connect(&serial, SIGNAL(bytesWritten(qint64)), this, SLOT(onBytesWritten(qint64)), Qt::DirectConnection); QObject::connect(&serial, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(onError(QSerialPort::SerialPortError)), Qt::DirectConnection); // Slot void MyClass::onReadyRead() { qDebug()<<"Signal onReadyRead"; buffer_mutex.lock(); buffer += serial.readAll(); qDebug()<<"Read: "<<qstr_to_hexstr(buffer); bufferNotEmpty.wakeAll(); buffer_mutex.unlock(); } […]

qtcreator发送的信号“停止”

我正在使用Linux,并且我意识到我的应用程序正在使用Qt Creator IDE上的“停止”buttonclosures后台进程。 我想要处理这些情况,这样应用程序就像closures主窗口一样。 为了编写处理程序,我需要知道它对应的信号。

在Linux上构build静态Qt5:如何在部署时处理字体?

我已经使用这些configuration选项(Ubuntu 12.04)创build了静态版本的Qt 5.2.0库: -opensource -confirm-license -force-pkg-config -release -static -prefix'/ home / juzzlin / qt5'-no-icu -opengl桌面-no-glib -accessibility -nomake示例-nomaketesting-qt-zlib – qt-libpng -qt-libjpeg -qt-sql-sqlite -qt-xcb -qt-pcre -v 现在,问题是,当我编译和链接我的应用程序对这些Qt库时,它会尝试从Qt安装path/home/juzzlin/qt5/lib/fonts 。 这应该如何工作? 该应用程序在我用来编译它的机器上工作,但不在其他机器上。 我也不想安装Qt的东西到应用程序的一些系统目录,因为应用程序不应该这样做。 这是我得到的错误: QFontDatabase:找不到字体目录/ home / juzzlin / qt5 / lib / fonts – Qt安装是否正确? 我如何强制它在其他目录中search字体? 另一件我不明白的是,为什么我在用MXE交叉编译Windows时没有这个问题? 在编译Qt库时,它使用几乎相同的configuration选项。

是否可以在QTreeWidget列中sorting数字?

我有一个填充了一些数字的QTreeWidget,我怎么能sorting他们? 如果我使用setSortingEnabled(true); 我只能正确sortingstring,所以我的列sorting: 1 10 100 2 20 200 但这不是我想要的! build议?

在网上运行一个Qt应用程序

我正在编写一个使用Qt的应用程序,并试图将其部署为一个Web应用程序。 我希望用户能够通过Web浏览器访问我的应用程序。 我猜这是一个networking应用程序是什么? 我有什么样的select? 我从来没有想过做这样的事情,但我想学习新的东西。 编辑:如果我将我的应用程序部署在Linux服务器上,并让用户通过terminal访问/运行,该怎么办? 我认为写Web应用程序将比我原先想象的更复杂。

Qt不会在Linux的debug / release文件夹中创build输出文件

当我在Ubuntu上构buildQt应用程序时,它将输出文件放在主解决scheme文件夹中,而不像在Windows上那样释放/debugging文件夹。 这是有问题的,因为有时输出文件需要作为构build过程的一部分运行(例如运行unit testing)。 我有一个想法,这与qmake.conf文件有关,但我不确定该怎么做。 所以我的问题是: 为什么这种差异存在(可能只是我?) 我应该如何确保我的应用程序能够在Windows和Ubuntu上正确构build?

本机KDE寻找Qt 5应用程序

我在Kubuntu 12.10 linux机器上安装Qt5和Qt4,注意到以下几点: 使用Qt4编译的程序具有原生的KDE外观和感觉。 我使用默认的KDE的Oxygen主题,我的程序也是这样(请注意平滑的渐变,标题和蓝色select的焦点部件); 但是当用Qt5 进行重新编译而没有对代码做任何改变的时候 ,它使用了不同的风格(看起来就像是Fusion ),看起来很尴尬和不合适(见右图) 我想要的是非常直截了当的:我希望我的应用能够适应周围的系统,也就是始终看起来是本地的。 在使用Qt4时,我习惯于默认使用这个。 Qt5在Windows中似乎也具有正常的本地外观。 但是我还需要做些什么才能在Kubuntu中拥有相同的function呢? 而且, 到处都是理想的? 我的意思是,我不想强​​制我的应用程序的Linux版本严格使用氧气 。 我希望它能够使用当前在KDE中设置的主题:就像在Qt4中一样。 看起来应用程序代码与这个问题无关:我没有使用任何QStyle,这是Qt的“hello-world”。 但是,以防万一它在GitHub上 。 UPD: @peppe 已经给出了相当充分的答案, 为什么会出现这个问题 (KDE中的Oxygen主题是针对Qt4编译的,而Qt5则无法使用)。 但我仍然在寻找如何解决这个问题的答案? 我试图find氧气主题源来玩,但除了Firefox主题没有find任何东西。 UPD2: @kwirz 提出了一个有趣的想法:强制应用程序使用GTK +主题,并在KDE设置中启用氧气gtk ,使GTK窗口看起来类似于氧气。 一方面,它确实看起来更接近于氧气: 但另一方面,我们已经看到了很小的差异:只读行编辑变成灰色,聚焦的button仍然不亮,等等。不幸的是,当试图将这种技术应用到更复杂的小部件时,出现更多的文物(特别是combobox和微调): 所以看起来这个技术不可能是一个完整的解决scheme,但仍然非常有用的是简单的情况。

C ++加载共享库并在Linux平台上运行时提取类实现

在C ++中,是否有可能在执行时加载共享库? 我希望用户select在运行时加载哪个共享库,而不用重新编译整个程序。 dlopen()是C的一个解决scheme,但是我的程序编写的是C ++ / Qt,提取的符号是Qt风格的类,有没有更多的“c ++”方法来做到这一点。

在没有OpenGL的X11的QT上显示图像的最快方法是什么?

我需要在QT小部件中显示原始图像。 我在framebuffer上运行X11,所以OpenGL不可用。 图像和帧缓冲区都是相同的格式–RGB565,但如果需要的话,我可以将其更改为任何其他格式。 我不需要混合或缩放。 我只是需要显示像素。 我使用QPainter :: drawImage,但它将QImage转换为QPixmap,这种转换似乎是非常缓慢的。 也是Xrender的支持,我认为不需要额外的开销来支持Xrender中的混合,而我并不需要它 有没有更好的办法? 如果在QT中不可用,我可以使用Xlib或任何其他库或协议。 我可以修改驱动程序,X服务器或其他任何东西。

Qt的sysroot和prefix选项是一个实际的例子

我正在查看可以为Qt提供的configure脚本运行的所有选项。 (特别是qt-everywhere-opensource-src-5.2.0)。 经过相当多的search,我已经确定这个东西是最好的logging,所以我希望我能得到一些帮助。 当我查看prefix和sysrootconfiguration选项的描述时: 〜/ qt-everywhere-opensource-src-5.2.0 $ ./configure -help | grep“sysroot” -extprefix <dir> …使用-sysroot时,将所有内容安装到<dir> , -sysroot <dir> ……将<dir>设置为目标编译器和qmake的sysroot,并设置pkg-configpath。 -no-gcc-sysroot …..当使用-sysroot时,它会禁止传递–sysroot到编译器 〜/ qt-everywhere-opensource-src-5.2.0 $ ./configure -help | grep“前缀” -prefix <dir> ……这将安装与<dir> -extprefix <dir> …使用-sysroot时,将所有内容安装到<dir> , -hostprefix [dir]开发时需要的工具和库 所以我之前使用了-prefix ,并且完全按照所述进行了操作。 它将所有内容放在提供的<dir> ,然后当我使用<prefix_dir>/bin/qmake构build我的应用程序并将其安装在我的目标平台上时,它希望find<prefix_dir>/lib处的所有共享对象库。 我的印象是,如果我使用-sysroot它会将所有东西安装在<sysroot_dir>然后当我在目标平台上安装我的应用程序时,它将在/libsearch。 至less我希望这是真的。 现在如果我的假设是正确的,那么-extprefix什么-extprefix呢? 他们是否说,如果我可以redirect的地方好事,如果我同时使用-sysroot和-extprefix ? 那么为什么我要使用-no-gcc-sysroot呢? 如果我想我的Qt库安装在“sysroot”为什么我不希望gcc使用/知道相同的sysroot? 如果我能得到一些关于如何正确使用这些选项的实际例子,那么对这些中的一些的解释会很好,甚至更好。