Skip to content

QML and Qt Quick

Looking for The Bling Thing(tm)? Post here!
20.0k Topics 77.4k Posts
  • Cant refresh QML item only after using it.

    Unsolved
    3
    0 Votes
    3 Posts
    333 Views
    B
    Didnt know about breaking bindings yet and I feel like I dont understand the code onActivated well. What does => means / how it's named? Currently the custom item is defined like this: LeftBind { id: enabler x: 291 y: 15 keyName: keyTranslator.getKey(Config.enabler) //Config.enabler is vkey (int), this function converts it to readable string (for example from c++ vkey 0x10 to "ALT") onAccepted: { var a = keyTranslator.getCode(keyName); // from string to vkey if(a === 404){ askForKey() } else { Config.set_enablerBtn(a) } } }
  • Scenegraph with OpenGL : Unwanted rendering

    Unsolved scengraph vtk opengl qquickwindow synchronization
    6
    0 Votes
    6 Posts
    945 Views
    J
    @JoeCFD I was working on other stuffs but now I remember why I can't override QQuickItem update() method... it is a non-virtual slot, so it can't solve my rendering issues. I am still looking for a solution ...
  • 0 Votes
    2 Posts
    962 Views
    A
    @jeanmilost Your logic seems to be correct. What you have to do is to move the re-calculation of Scrollbar size & position to the Rectangle rcPageContainer because you are applying scale for that. Rectangle { id: rcPageContainer objectName: "rcPageContainer" ... /// called when page viewport width changed onWidthChanged: { sbHorz.size = rcPageViewport.width / rcPageContainer.width sbHorz.position = Math.min(Math.max(sbHorz.position, 0.0), 1.0 - (sbHorz.size)); } /// called when page viewport height changed onHeightChanged: { sbVert.size = rcPageViewport.height / rcPageContainer.height sbVert.position = Math.min(Math.max(sbVert.position, 0.0), 1.0 - (sbVert.size)); } }
  • 0 Votes
    1 Posts
    278 Views
    No one has replied
  • Import says QML module not found.

    Unsolved
    11
    0 Votes
    11 Posts
    4k Views
    R
    Okay. Thanks. I would have tried to use the QML2 path!
  • Customiza ComboBox in QML

    Solved
    8
    0 Votes
    8 Posts
    771 Views
    ?
    It's work. Thanks Result [image: Screenshot_20211128_143000.jpg]
  • Memory leak bug with Qt Quick (QT 6.2.1)

    Unsolved
    5
    0 Votes
    5 Posts
    713 Views
    M
    Thanks for the tip on Stackoverflow, I can see that QT6Guid is Allocating that memory but never releases it. Also there is Unresolved Allocation which I don't know what it is. The test was : Set the window to minimum size Take Memory Snapshot Resize the window by dragging the mouse multiple time Take a Memory Snapshot Repeat One more time Anybody have a clue on what's happening? Unresolved Allocation Qt6Guid.dll!QGles2GraphicsPipeline [image: 858fb3b1-d888-439c-923a-c05dec1c9fcb.png]
  • Qt6.2 TableView and ItemSelectionModel - Row / Column Selection Modes?

    Unsolved
    1
    0 Votes
    1 Posts
    188 Views
    No one has replied
  • coverage using TUG for qt 5.15

    Unsolved
    2
    0 Votes
    2 Posts
    257 Views
    K
    The following link provides the information about Qt /QML application coverage analysis and looking for any similar Plugins from forum. Hoping to hear soon. https://forum.qt.io/topic/61133/tug-framework-open-source-gui-unit-testing-for-qt-applications
  • Cannot choose QtQuick version in Ubuntu

    Unsolved
    1
    0 Votes
    1 Posts
    755 Views
    No one has replied
  • animation does not work as excepted in qml

    Unsolved
    2
    0 Votes
    2 Posts
    283 Views
    No one has replied
  • Dynamic component makes multiple components !!! in qml

    Solved
    3
    0 Votes
    3 Posts
    358 Views
    Q
    @GrecKo thank you for your answer. actually i did'nt know this way to make my component dinamically. i learned this thing about binding and now i know. thanks
  • Optional Javascript engine in Qt 6.1 / 6.2 - ETA?

    Unsolved
    4
    0 Votes
    4 Posts
    445 Views
    sierdzioS
    It is not available in 6.2. I don't know what the plans are, sorry. Maybe ask on qt-devel mailing list?
  • Qt quick width HorizontalHeaderView

    Unsolved
    2
    0 Votes
    2 Posts
    375 Views
    Y
    I have the same problem too, have you solved it? Still exists in Qt6.2.1
  • 0 Votes
    3 Posts
    391 Views
    V
    Issue was the name used when setting the font. Should not be using, "Liberation", but "LiberationSans". That being the case, it was also not necessary to set the style to SansSerif, as that was the only style available for the "LiberationSans" font.
  • Application Portrait and Landscape mode (Horizontal/Vertical rotation)

    Solved
    8
    0 Votes
    8 Posts
    2k Views
    SebastianMS
    I didn't add anchors.centerIn: parent in content Item (which is rotated and is changing size). In result, after rotation Item was placed in completely crazy place.
  • Qt Creator complains Unknown component M300 for items from library

    Solved
    2
    0 Votes
    2 Posts
    896 Views
    SebastianMS
    When I moved whole content of components to Module. Added qmldir and explicitly enumerate all files inside. After that set(QML_IMPORT_PATH ${CMAKE_CURRENT_LIST_DIR}/qml ${CMAKE_SOURCE_DIR}/common CACHE STRING "" FORCE) was enough for Qt Creator to find missing or unknown components.
  • Qt6.2 TableView SelectionModel / Rectangle selection not working

    Solved
    3
    0 Votes
    3 Posts
    757 Views
    denishessbergerD
    Thanks! Would be great if the example itself would also contain either interactive: false or the selectionMode.
  • Lots of TypeErrors in console when migrating to Qt6

    Unsolved
    5
    0 Votes
    5 Posts
    1k Views
    TassosT
    I am facing the same issue. It seems that the macOS style is broken. The workaround to get rid of these warnings is to force the Basic style via: QQuickStyle::setStyle("Basic");
  • Best approach for viewing C++ logging in QML

    Unsolved
    2
    0 Votes
    2 Posts
    2k Views
    W
    I did it with second approach, but it's not a string buffer but a log emitter, which just store latest log and alerts to QML by signal. The message handler LogManager::RedirectToStdout and LogManager::RedirectToFile change the log emitter when called. /// LogManager.hpp #ifndef LOGMANAGER_HPP #define LOGMANAGER_HPP #include <QObject> #include <QString> #include <QDateTime> #include <QFile> #include <QMutex> class LogEmitter : public QObject { friend class LogManager; Q_OBJECT Q_PROPERTY(QString time MEMBER m_Time NOTIFY changed) Q_PROPERTY(QString type MEMBER m_Type NOTIFY changed) Q_PROPERTY(QString message MEMBER m_Message NOTIFY changed) public: explicit LogEmitter(QObject *parent = nullptr) {} void Set(const QString &Time, const QString &Type, const QString &Message) { m_Time = Time; m_Type = Type; m_Message = Message; m_Full = m_Time + " " + m_Type + ": " + m_Message; emit changed(); } QString GetString() { return m_Full; } signals: void changed(); private: QString m_Time; QString m_Type; QString m_Message; QString m_Full; }; class LogManager : public QObject { Q_OBJECT public: static LogManager &Initialize(); LogEmitter *GetEmitter(); private: static void RedirectToStdout(QtMsgType type, const QMessageLogContext &context, const QString &msg); static void RedirectToFile(QtMsgType type, const QMessageLogContext &context, const QString &msg); private: explicit LogManager(QObject *parent = nullptr); private: static LogEmitter *m_LogEmitter; }; #endif // LOGMANAGER_HPP #include "LogManager.hpp" LogEmitter *LogManager::m_LogEmitter = new LogEmitter; namespace LogManagerVars { QDateTime DateTime; QFile File; }; LogManager &LogManager::Initialize() { LogManager *SingletonObject = new LogManager; if (qEnvironmentVariableIsEmpty(qgetenv("QTDIR"))) // If Qt creator then not write to file { qInstallMessageHandler(RedirectToStdout); } else { LogManagerVars::DateTime = QDateTime::currentDateTime(); LogManagerVars::File.setFileName(LogManagerVars::DateTime.toString("yyyy.MM.dd") + ".log"); qInstallMessageHandler(RedirectToFile); } return *SingletonObject; } LogEmitter *LogManager::GetEmitter() { return m_LogEmitter; } void LogManager::RedirectToStdout(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QByteArray localMsg = msg.toLocal8Bit(); QString TypeStr; switch (type) { case QtDebugMsg: fprintf(stderr, "Debug: %s \n", localMsg.constData()); TypeStr = "DEBUG"; break; case QtInfoMsg: fprintf(stderr, "Info: %s \n", localMsg.constData()); TypeStr = "INFO"; break; case QtWarningMsg: fprintf(stderr, "Warning: %s (%s:%u)\n", localMsg.constData(), context.file, context.line); TypeStr = "WARNING"; break; case QtCriticalMsg: fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); TypeStr = "ERROR"; break; case QtFatalMsg: fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); TypeStr = "ERROR"; abort(); } m_LogEmitter->Set(QDateTime::currentDateTime().toString("[hh:mm:ss]"), TypeStr, msg); } void LogManager::RedirectToFile(QtMsgType type, const QMessageLogContext &context, const QString &msg) { if (type != QtInfoMsg && type != QtCriticalMsg) return; static QMutex Mutex; QMutexLocker lock(&Mutex); if (!LogManagerVars::File.isOpen()) if (!LogManagerVars::File.open(QIODevice::Append | QIODevice::Text)) return; m_LogEmitter->Set(QDateTime::currentDateTime().toString("[hh:mm:ss]"), (type == QtInfoMsg ? "INFO" : "ERROR"), msg); QString Output = m_LogEmitter->GetString() + "\n"; LogManagerVars::File.write(Output.toUtf8()); LogManagerVars::File.close(); } LogManager::LogManager(QObject *parent) { } /// main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQmlContext> #include "LogManager.hpp" int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; const QUrl url(QStringLiteral("qrc:/src/qml/MainWindow.qml")); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); }, Qt::QueuedConnection); LogManager *logger = &LogManager::Initialize(); LogEmitter *log = logger->GetEmitter(); engine.rootContext()->setContextProperty("log", log); engine.load(url); return app.exec(); } /// QML Popup { visible: false modal: true focus: false closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent padding: 10 ListModel { id: listModel function push(newElement) { if (listModel.count >= 50) listModel.remove(0); listModel.append(newElement); } } Component { id: delegate TextInput { selectByMouse: true text: timeStr + " " + typeStr + ": " + messageStr color: typeStr == "INFO" ? "black" : (typeStr == "ERROR" ? "red" : "blue") } } ListView { id:lst height: parent.height*0.8 width: parent.width/2 anchors.verticalCenter: parent.verticalCenter model: listModel delegate: delegate } Connections { target: log onChanged: { listModel.push({ timeStr: log.time, typeStr: log.type, messageStr: log.message }) } } }