Well, the documentation gives the example of the singleton being instantiated at the main.cpp:main() level.
 
It felt a little wrong, but I subclassed QGuiApplication, and created and registered the singleton there:
GuiApplication::GuiApplication(int argc, char*argv[]):
	QGuiApplication::QGuiApplication(argc, argv)
{
	m_hardwareInterface = new HardwareInterface;
	qmlRegisterSingletonInstance("com.company", 1, 0, "HardwareInterface", m_hardwareInterface);
}

 
This seems to work, but seemed unnatural.
 
 
 
 
 
 
Sent: Thursday, May 06, 2021 at 5:42 PM
From: "Jérôme Godbout" <godbo...@amotus.ca>
To: "Jason H" <jh...@gmx.com>, "interestqt-project.org" <interest@qt-project.org>
Subject: Re: [Interest] QML Singleton and QTimer?

You can check the thread affinity of an object and the current thread that will display the problem you encounter. Use a queued signal into the QTimer thread to sent the start (it will be delayed until the thread process the event, hopefully you do no need precision there).

 

Jérôme Godbout, B. Ing.


Software / Firmware Team Lead
O: (418) 682-3636 ext.: 114  

C: (581) 777-0050 
godbo...@dimonoff.com

signature_93124102

dimonoff.com

1015 Avenue Wilfrid-Pelletier, 

Québec, QC G1W 0C4, 4e étage

 

 

From: Interest <interest-boun...@qt-project.org> on behalf of Jason H <jh...@gmx.com>
Date: Thursday, May 6, 2021 at 5:34 PM
To: interestqt-project.org <interest@qt-project.org>
Subject: [Interest] QML Singleton and QTimer?

I'm trying to have a simple singleton class, but it doesn't appear that I can use timers?


HardwareInterface::HardwareInterface(QObject *parent) : QObject(parent)
{
        m_timer = new QTimer(this);

        connect(m_timer, &QTimer::timeout, this, [=](){
                qDebug() << Q_FUNC_INFO;
        });

        m_timer->start(100); // QObject::startTimer: Timers can only be used with threads started with QThread

}

main.cpp: int main() {
...
qmlRegisterSingletonInstance("com.company.example", 1, 0, "HardwareInterface", &hardwareInterface);
...

How do we go about using timers in singletons?

_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to