小编Nya*_*uko的帖子

Qt:信号槽通过const参考

许多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".

c++ qt pass-by-reference pass-by-value signals-slots

3
推荐指数
1
解决办法
1510
查看次数

是否可以使用openGL绘制YUV422和YUV420纹理

如何使用 openGL 着色器绘制上述格式纹理?如何使用 glTexImage2d 将数据传递给着色器?

opengl

3
推荐指数
1
解决办法
3904
查看次数

Qt:继承导致不明确

我有以下案例:

class A: public QObject

class B: public A, public QThread
Run Code Online (Sandbox Code Playgroud)

那么继承歧义就会发生,因为 QObject 被继承了两次......这个问题有解决办法吗?

c++ qt

3
推荐指数
1
解决办法
1273
查看次数

记录传入的 mjpeg 流?

我有一个来自 IP cam 的传入 mjpeg 流。现在我可以使用 ffmpeg 和 openGL 显示它,但是当我尝试将所有传入的流保存到一个文件中并稍后播放时,播放器(VLC)无法打开该文件。

有人告诉我,我需要在开始/停止录制时添加一些标题,让播放器知道文件的格式。但我找不到关于这个主题的任何参考。任何人都可以分享有关此主题的示例吗?

ffmpeg video-streaming

3
推荐指数
1
解决办法
9775
查看次数

QTimer一点都不准确?

在具有非常强大的CPU(8核16线程)的Windows7 64位机器上运行.我使用QTimer来触发50Hz的函数调用.但我最终得到30Hz.函数调用本身绝对需要不到10毫秒才能完成.整个过程发生在一个单独的线程中.

在我的情况下会出现什么问题?Qt的医生说它会在5%以内准确吗?

c++ qt

3
推荐指数
3
解决办法
1532
查看次数

Qt中具有默认父级的QObject的删除序列是什么?

Qt Doc说如果QObject有父对象,那么当父对象被删除时,它也会删除它的所有子对象.但是,如果我有多个具有默认父级(0)的QObject,它们什么时候会被删除?那删除的顺序是什么?

qt qobject

2
推荐指数
1
解决办法
961
查看次数

Qt:通过 QMainWindow::save/restoreState 控制 DockWidgets?

如果我有一个像这样的停靠小部件:

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 一样?

c++ qt

2
推荐指数
1
解决办法
3034
查看次数

如何将一个 qApplication 的 GUI 嵌入到另一个 qApplication 的 mainWindow 中?

有两个 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。

c++ qt

2
推荐指数
1
解决办法
1965
查看次数

问:如何正确使用moveToThread(this)?

我有一个这样的课:

class myClass:public QThread
Run Code Online (Sandbox Code Playgroud)

然后在我的构造函数中我做了:

myClass::myClass(){
    moveToThread(this);
    ...
}
Run Code Online (Sandbox Code Playgroud)

似乎所有成员槽实际上都在工作线程上工作.但是在这种情况下如何在解构过程中阻止线程?

c++ qt multithreading

1
推荐指数
1
解决办法
2802
查看次数

如何区分QNetworkReply是否中止?

我有以下代码:

connect(&netMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(loadFinished(QNetworkReply*)), Qt::UniqueConnection);
reply = netMgr.get(qheader);
Run Code Online (Sandbox Code Playgroud)

我怎么能判断loadFinished(); 是否通过调用reply-> abort()来触发插槽?

c++ networking qt

1
推荐指数
1
解决办法
620
查看次数