相关疑难解决方法(0)

理解Qt中的表单布局机制

Qt 具有灵活而强大的布局机制来处理桌面应用程序窗口的视图.

但它非常灵活,几乎无法理解,当出现问题并需要微调时.如此强大,它可以击败任何人,试图压倒Qt对形式应该如何看待的看法.

那么,任何人都可以解释,或提供文章或Qt定位机制的来源吗?

我试图强迫QLabel,QPushButton并且QTableView,在他们的名字尾随下划线标记,是高出两倍QTextBrowserverticalStretch = 1以下.如何正确处理小部件的高度?

谷歌文档中我的表格.ui文件.在名称中搜索"____",在QtDesigner中预览

forms qt qt4 qt-designer

59
推荐指数
1
解决办法
4万
查看次数

如何在Qt中有效地显示OpenCV视频?

我在OpenCV的帮助下从ip摄像头捕获多个流.当我尝试从OpenCV窗口(cv::namedWindow(...))显示这些流时,它没有任何问题(我到目前为止已尝试过多达4个流).

当我尝试在Qt小部件中显示这些流时出现问题.由于捕获是在另一个线程中完成的,我必须使用信号槽机制来更新QWidget(在主线程中).

基本上,我从捕获线程发出新捕获的帧,并且GUI线程中的一个插槽捕获它.当我打开4个流时,我无法像以前那样流畅地显示视频.

这是发射器:

void capture::start_process() {
    m_enable = true;
    cv::Mat frame;

    while(m_enable) {
        if (!m_video_handle->read(frame)) {
            break;
        }
        cv::cvtColor(frame, frame,CV_BGR2RGB);

        qDebug() << "FRAME : " << frame.data;

        emit image_ready(QImage(frame.data, frame.cols, frame.rows, frame.step, QImage::Format_RGB888));
        cv::waitKey(30);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的插槽:

void widget::set_image(QImage image) {
    img = image;
    qDebug() << "PARAMETER IMAGE: " << image.scanLine(0);
    qDebug() << "MEMBER IMAGE: " << img.scanLine(0);
}
Run Code Online (Sandbox Code Playgroud)

问题似乎是连续复制QImages的开销.尽管QImage使用隐式共享,但当我通过qDebug()消息比较图像的数据指针时,我看到了不同的地址.

1-有没有办法将OpenCV窗口直接嵌入到QWidget中?

2-处理显示多个视频的最有效方法是什么?例如,视频管理系统如何同时显示多达32台摄像机?

3-必须走的路是什么?

c++ qt multithreading opencv

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

标签 统计

qt ×2

c++ ×1

forms ×1

multithreading ×1

opencv ×1

qt-designer ×1

qt4 ×1