Articles of qt

Qt版本无效

我正在使用Linux,我已经安装了Qt Creator 2.5.2,Qt库4.7.4和4.4.3。 我不能直接安装二进制文件,因为版本之间不兼容。 Qt 4.7.4和Qt 4.4.3的安装过程都是一样的。 我面临的问题是Qt Creator认识到Qt 4.7.4,而不是Qt 4.4.3,错误 Qt版本无效:无法确定Qt安装的二进制文件的path,可能path错误。 那么每个库都安装在/home/$username/qt/Qt-$version 。 当我手动编译一个项目 cd directory /home/$username/qt/Qt-4.4.3/qmake $PATHPRO make 一切工作的魅力,我可以运行应用程序。 我试过了什么? 重新编译Qt-4.4.3 检查文件夹权限 重新启动Qt Creator 在我的桌面上粉碎我的头 有什么想法吗? 操作系统是SUSE Enterprise 11-32位。

在Ubuntu上使用共享库部署Qt应用程序二进制文件

我想部署一个我已经在任何“Vanilla”Ubuntu上运行的Qt应用程序。 它可能是一个.deb软件包,或者简单的二进制文件。 事情是,我不知道该怎么做。 我试图按照这个教程: https : //lemirep.wordpress.com/2013/06/01/deploying-qt-applications-on-linux-and-windows-3/我真的设法让应用程序运行在另一台电脑上,但是…它应该播放一些video,我得到了一个消息: defaultServiceProvider :: requestService():找不到服务 – “org.qt-project.qt.mediaplayer” 我可能错过了一些库。 但我真的不知道哪一个。 当我在我的二进制文件上运行ldd时,一切似乎都没有问题。 ldd的结果如下: libQt5MultimediaWidgets.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5MultimediaWidgets.so.5 (0x00007f02a0adf000) libQt5Multimedia.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Multimedia.so.5 (0x00007f02a07fc000) libQt5Widgets.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 (0x00007f029ffb9000) libQt5Xml.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Xml.so.5 (0x00007f029fd7b000) libQt5Network.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Network.so.5 (0x00007f029fa17000) libQt5Gui.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Gui.so.5 (0x00007f029f2f3000) libQt5Core.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Core.so.5 (0x00007f029ebbf000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f029e8a1000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f029e68a000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 […]

键盘inputQt

我正在开发一个在embedded式Linux上运行的Qt应用程序。 我对这个Qt业务很新,因为我刚刚开始了一个月,所以明白,我不是那个面向对象 …:P 我有我的目标运行Linux上运行的Qt应用程序。 Qt文档http://doc.qt.io/archives/qt-4.7/qt-embedded-pointer.html说,我们必须通过导出某些variables来启用触摸屏,USB键盘,键盘等。 也就是说, export QWS_MOUSE_PROTO=tslib:/dev/input/event1 export QWS_KEYBOARD="linuxinput:/dev/input/event0 usb:/dev/input/event2" 好吧,你可以猜到,第一行将QT中的鼠标设备设置为触摸屏。 “tslib”是触摸屏库,“event1”是代表触摸屏的节点。 同样,第二行是用于板载键盘(event0)和USB键盘(event2)的。 现在,触摸屏工作得很好。 但是问题出在哪个键盘上。 如果我不导出第二个variables,即QWS_KEYBOARD ,那么应用程序运行良好。 但是,如果我导出第二个variables,则应用程序一旦启动就会进入停止状态(SIGSTOP)。 从ps输出中可以看出这一点。 我无法使它与SIGCONT合作。 我将尝试从源代码重新configurationQt。 任何想法都欢迎。

在QWidget外部GUI线程上绘画问题

我正在开发一个应用程序,我想连续从远程主机接收图像并将其显示在屏幕上。 为此,我遵循给定的策略1)我有一个主要的QWidget对象,其中包含的QImage(工作正常)2)从远程主机接收的图像被绘制在QImage对象,这项工作是在一个工作线程使用QPainter完成。 (工作正常)3)但问题是,图像不更新QWidget,除非我调整窗口小部件,因为重绘事件调用QWidget …现在,如果我从工作线程重绘QWidget,它会给出错误“ QPixmap:在GUI线程之外使用pixmaps是不安全的..“和应用程序崩溃。 有关于此的任何帮助?

如何将X11事件传递给QDialog

目前,我正在尝试将系统X11事件(在Linux上)传递给我创build的对象。 要做到这一点,我已经从我的QApplication安装了一个eventFilter到我的对象。 这是有效的,因为它获得了应用程序的所有事件。 不过,我也需要传递对象X11事件。 我继续前进,在我的对象中创build了一个x11Event,希望它能够接收来自X11的事件,但事实并非如此。 反正有X11事件直接传递给我的对象,在我的应用程序?

为Linux开发

我想开发Linux的多媒体编码器。 我想利用就绪的命令行编解码器,如ffmpeg。 我想build立好的graphics用户界面和传递命令行编码器的参数。 我正在考虑使用Qt。 (可能吗?) 我对Linux编程一无所知,但是我已经是Ubuntu用户8个月了。 请向我提供指导教程的链接。 (我已经尝试了Ubuntu论坛,但这里面都是初学者的东西!) 我需要你们的提示。 我准备好了解它的一切! 我准备好学习新的语言。 谢谢!

如何禁用Qt在捕获窗口小部件焦点导航的箭头键的Linux上的行为

我正在开发一个主要在MacOS上开发的Qt应用程序,但是这个应用程序也是在Linux上构build和testing的。 我们在主窗口类中定义一个keyPressEvent()方法来响应某些键盘事件。 其中,我们响应Qt :: Key_Left,Qt :: Key_Right和Qt :: Key_Space。 这在MacOS上很好用。 然而,在Linux上,我们从来没有得到这些事件。 做一些谷歌search(并确认它与我们的应用程序在Linux上的行为),似乎这样做的原因是Qt使用这些键在应用程序的GUI中button窗口小部件的键盘导航。 如果我按下Linux上的箭头键,我将遍历所有活动的button小部件,依次select每个小部件。 如果我单击空格键,则按下当前选定的button。 到目前为止,Googlesearch所能find的所有build议都是关于如何将滤镜子类化或应用到特定button,以避免这种行为,方法是让button忽略事件并将其传递。 但是我不想为每个我放入GUI的button部件做这件事。 这只是跛脚。 有没有办法全局禁用这种行为,并允许我的应用程序代码实际上得到所有的箭头键和空格键事件?

如何使用Qextserialport在串行端口上写入

我正在使用Ubunt 10.10。 我想通过QT与一个微控制器(ATmega328p)进行通信,所以为了testing,我在微控制器上创build了一个虚拟应用程序,它从UART中读取字符,并在串行端口(回复)上以相同的字符响应,但在括号。 如果PC发送:a,则PC收到回复[a] 当我使用超级terminal(GtkTerm)从PC发送字符时,应用程序运行良好,但是当我使用QT时,它不起作用。 我正在从QT发送一个串口上的字符,我正在等待在超级terminal上收到回复,但是我没有收到任何回复。 串行通信属性:Baud9600,Parity_none,Stop_bits_1,Data_8bits,Flow_control_Off #include <QtCore/QCoreApplication> #include <qextserialport.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); const char data[]= "e"; QextSerialPort * port = new QextSerialPort("/dev/ttyUSB0"); port->setBaudRate(BAUD9600); port->setFlowControl(FLOW_OFF); port->setParity(PAR_NONE); port->setDataBits(DATA_8); port->setStopBits(STOP_1); port->setTimeout(0); bool res = false; res = port->open(QIODevice::ReadWrite | QIODevice::Unbuffered); if(res) { qDebug("Opened"); qDebug(data); int i = port->write(data, sizeof(data)); } […]

如何使用QT,OpenGL,C ++和Linux更改屏幕分辨率?

我只想做一个全屏游戏。 我知道如何在Windows上更改分辨率,但是如何在Linux下更改分辨率? 有没有跨平台的QT解决scheme呢? 另外我的GLWidget也有边框。 如何使窗口部件覆盖整个窗口? 我只是要发布代码: #include <QtOpenGL> class GLWidget : public QGLWidget { public: void initializeGL() { glClearColor(0.0f, 0.0f, 1.0f, 0.0f); glClearDepth(1.0f); } void paintGL() { glClear(GL_COLOR_BUFFER_BIT); } void resizeGL(int width, int height) { int side = qMin(width, height); glViewport((width – side) / 2, (height – side) / 2, side, side); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-0.5f, […]

QFileDialog :: getSaveFileName和默认的selectedFilter

我有一些filtergetSaveFileName,我希望当用户打开“保存”对话框时select其中之一。 Qt文档说明如下: 可以通过将selectedFilter设置为所需的值来select默认的filter。 我尝试下面的变种: QString selFilter="All files (*.*)"; QFileDialog::getSaveFileName(this,"Save file",QDir::currentPath(), "Text files (*.txt);;All files (*.*)",&selFilter); 但是当出现对话框时,select“文本文件”filter(通常情况下,列表中的第一个filter)。 我也尝试了以下所有内容: selFilter="All files"; selFilter="All files (*.*)\n"; selFilter="All files (*.*);;"; selFilter="All files (*.*)\0"; 以及这些变体的不同混合物。 我的代码中的filter列表的格式是根据文档(来自Qt文档的示例行)完成的: "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)" 请注意,输出到selFiltervariables正常工作:用户按下确定后,selFiltervariables包含用户select的filter。 平台:Linux(OpenSUSE 12.1),Qt 4.7.4,gcc 4.6.2。 那么如何设置默认filter呢?