小编A.J*_*A.J的帖子

如何在 QML 中动态创建 Popup

当我尝试使用Qt.createQmlObject(...)Qt.createComponent(...)动态创建 Popup 时,出现异常:

QML 弹出窗口:找不到任何可打开弹出窗口的窗口。

这是我的代码:

var popup1 = Qt.createQmlObject('import QtQuick 2.8; import QtQuick.Controls 2.1; Popup { id: popup; x: 100; y: 100; width: 200; height: 300; modal: true; focus: true; closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent; visible: false }',
                                window,
                                "DynamicPopup");
popup1.open()

var popupComponent = Qt.createComponent("qrc:/TestPopup.qml")
var popup2 = popupComponent.createObject(window);
popup2.open()
Run Code Online (Sandbox Code Playgroud)

测试弹出.qml:

import QtQuick.Window 2.2
import QtQuick.Controls 2.1

Popup {
    x: 100
    y: 100
    width: 200
    height: 300
    modal: true
    focus: true
    closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
    visible: …
Run Code Online (Sandbox Code Playgroud)

qt qml qt5 qtquick2

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

如何在QQuickPaintedItem中以有效的方式绘制顺序图像

出于某种原因,我需要将 opencv VideoCapture 包装在一个将在 Qt Quick 中使用的类中。

有两个类,一个是Camera,另一个是CameraView。CameraView 继承自 QQuickPaintedItem。

相机类将定期获取图像。它通过 QObject::startTimer(int interval) 实现。(例如,如果网络摄像头的 fps 为 30,则计时器间隔为 1000 / 30 - 8,8 是时间偏差)。一旦 Camera 获取到图像,它会通过调用 CameraView::Update() 通知 CameraView 重新绘制。

而在 CameraView::paint(QPainter *) 中,CameraView 将从 Camera 类获取图像的副本并通过调用 QPainter::drawImage(...) 绘制该图像。

我在编码过程中遇到了一些问题:

  1. 我尝试用 QThread 替换时间事件以定期从相机获取图像。当我在 QThread 中调用 CameraView::Update() 时,CameraView 不会重新绘制。问题是什么?

  2. 在我的笔记本电脑中,当我让 CameraView 全屏绘制图像时,我发现一个 Python 程序变慢了。是另一种低成本高效的绘画方式吗?

qt qgraphicsscene qquickitem

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

"QIODevice设备未打开"仅在发布时构建

我正在使用QNetworkAccessManager来传输文件.在Debug中构建程序时,我的程序运行没有任何问题.但是在Release中构建问题有一个奇怪的问题:QIODevice :: read(QFile,"我的文件路径"):设备未打开

我的代码有什么问题?谢谢你的帮助!

QHttpMultiPart* getPacket(QString imgPath)
{
    QHttpMultiPart *pMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);

    QFile *imgFile = new QFile(imgPath);
    imgFile->setParent(pMultiPart);
    Q_ASSERT(imgFile->open(QIODevice::ReadWrite));

    QHttpPart imagePart;
    imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
    imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"img\"; filename=\"target.jpg\""));
    imagePart.setBodyDevice(imgFile);
    pMultiPart->append(imagePart);

    return pMultiPart;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    JTest testObj;
    QNetworkAccessManager manager;

    QHttpMultiPart *pHMP = getPacket("F:/Temp/1.jpg");
    QNetworkReply *pNR = manager.put(QNetworkRequest(QUrl("http://192.168.11.102:8080/Test")), pHMP);
    QObject::connect( pNR, SIGNAL(finished()), &testObj, SLOT(handleTransmissionFinished()) );

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

qt qtnetwork qiodevice

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

标签 统计

qt ×3

qgraphicsscene ×1

qiodevice ×1

qml ×1

qquickitem ×1

qt5 ×1

qtnetwork ×1

qtquick2 ×1