有没有办法在我的应用程序的Linux中设置gui线程优先级高于其他线程? 我也知道QThread类中的setPriority函数,不适用于linux。 但是,有没有解决方案呢? (我正在使用qt4.8) 非常感谢
答案 0 :(得分:0)
在GUI线程中(例如在main()
中)执行:
QThread::currentThread()->setPriority(QThread::HighPriority);
有关更多可能的优先级值,请参阅Qt文档。
答案 1 :(得分:0)
你不应该这样做。您的GUI应该只显示最新的图像。很可能您的设计强制GUI显示过时的图像,即使它们不再相关。
在Qt中实现的典型方法是让图像查看器类只显示最近设置的图像:
class ImageViewer : public QWidget {
Q_OBJECT
QImage m_img;
bool m_new;
void paintEvent(QPaintEvent *) {
QPainter p(this);
p.drawImage(0, 0, m_img);
m_new = false;
}
public:
ImageViewer(QWidget * parent = 0) : QWidget(parent), m_new(false) {
setAttribute(Qt::WA_OpaquePaintEvent);
}
Q_SLOT void setImage(const QImage & img) {
if (m_new) qDebug() << "Viewer dropped frame!";
m_img = img;
m_new = true;
if (m_img.size() != size()) setFixedSize(m_img.size());
update();
}
};
然后,您可以发送连接到setImage
广告位的信号。这些信号可以来自已被移动到另一个线程的QObject
。