许多qt示例做了以下事情:
signal: passByConstRef(const QImage &)
slot: receivedByConstRef( const QImage &)
Run Code Online (Sandbox Code Playgroud)
它们通过不同线程中的排队连接进行连接.在主题1中:
{QImage image;
image = fromData(...);
emit passByConstRef(image);
}
Run Code Online (Sandbox Code Playgroud)
在主题2中:
receivedByConstRef(const QImage& image){
...
pixmap = fromImage(image);
...
}
Run Code Online (Sandbox Code Playgroud)
由于信号槽通过const Ref传递QImage,这意味着没有复制发生,有可能在构建"pixmap"时,线程1中"图像"的生命周期结束并导致构造失败线程2中的"pixmap".
如何使用 openGL 着色器绘制上述格式纹理?如何使用 glTexImage2d 将数据传递给着色器?
我有以下案例:
class A: public QObject
class B: public A, public QThread
Run Code Online (Sandbox Code Playgroud)
那么继承歧义就会发生,因为 QObject 被继承了两次......这个问题有解决办法吗?
我有一个来自 IP cam 的传入 mjpeg 流。现在我可以使用 ffmpeg 和 openGL 显示它,但是当我尝试将所有传入的流保存到一个文件中并稍后播放时,播放器(VLC)无法打开该文件。
有人告诉我,我需要在开始/停止录制时添加一些标题,让播放器知道文件的格式。但我找不到关于这个主题的任何参考。任何人都可以分享有关此主题的示例吗?
在具有非常强大的CPU(8核16线程)的Windows7 64位机器上运行.我使用QTimer来触发50Hz的函数调用.但我最终得到30Hz.函数调用本身绝对需要不到10毫秒才能完成.整个过程发生在一个单独的线程中.
在我的情况下会出现什么问题?Qt的医生说它会在5%以内准确吗?
Qt Doc说如果QObject有父对象,那么当父对象被删除时,它也会删除它的所有子对象.但是,如果我有多个具有默认父级(0)的QObject,它们什么时候会被删除?那删除的顺序是什么?
如果我有一个像这样的停靠小部件:
QDockWidget *shapesDockWidget = new QDockWidget(tr("Shapes"));
shapesDockWidget->setObjectName("shapesDockWidget");
shapesDockWidget->setWidget(treeWidget);
addDockWidget(Qt::RightDockWidgetArea, shapesDockWidget);
Run Code Online (Sandbox Code Playgroud)
根据 QMainWindow::save/restoreState 的文档,我似乎可以使用以下函数直接保存/恢复扩展窗口小部件:
void MainWindow::writeSettings()
{
QSettings settings("Software Inc.", "Icon Editor");
settings.beginGroup("mainWindow");
settings.setValue("geometry", saveGeometry());
settings.setValue("state", saveState());
settings.endGroup();
}
void MainWindow::readSettings()
{
QSettings settings("Software Inc.", "Icon Editor");
settings.beginGroup("mainWindow");
restoreGeometry(settings.value("geometry").toByteArray());
restoreState(settings.value("state").toByteArray());
settings.endGroup();
}
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能获得指向恢复的码头小部件的指针呢?就像指针 ShapesDockWidget 一样?
有两个 qApplications A & B,它们可以用自己的主窗口单独执行。
我想实现以下目标:
1) //Open Application B.
//Inside App B's code
QProcess* proA = new QProcss();
proA->start(A.exe) //Under Windows7
2) //Instead of showing app A in a separate window.
//I would like to show it as a widget of app B's main window.
Run Code Online (Sandbox Code Playgroud)
有点像谷歌浏览器。这里有一个类似的帖子:QT How to embed an application into QT widget谈到了类似的问题。但它涉及实现您自己的窗口管理系统。是否有更简单的解决方案,因为我的应用程序都是 Qt 的 qApp 并且都使用 QWindow。
我有一个这样的课:
class myClass:public QThread
Run Code Online (Sandbox Code Playgroud)
然后在我的构造函数中我做了:
myClass::myClass(){
moveToThread(this);
...
}
Run Code Online (Sandbox Code Playgroud)
似乎所有成员槽实际上都在工作线程上工作.但是在这种情况下如何在解构过程中阻止线程?
我有以下代码:
connect(&netMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(loadFinished(QNetworkReply*)), Qt::UniqueConnection);
reply = netMgr.get(qheader);
Run Code Online (Sandbox Code Playgroud)
我怎么能判断loadFinished(); 是否通过调用reply-> abort()来触发插槽?