Difference between revisions of "Qt/Widgets/Timer"
From ProgrammingExamples
< Qt
Daviddoria (Talk | contribs) m (→CMakeLists.txt) |
Daviddoria (Talk | contribs) (Do not subclass QThread.) |
||
Line 21: | Line 21: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
#include <QtGui> | #include <QtGui> | ||
− | + | #include <QImage> | |
− | + | ||
#include "form.h" | #include "form.h" | ||
+ | #include "MyClass.h" | ||
+ | |||
#include <iostream> | #include <iostream> | ||
− | + | Form::Form(QWidget *parent) | |
+ | : QWidget(parent) | ||
{ | { | ||
− | + | setupUi(this); | |
} | } | ||
− | void | + | void Form::on_btnOpen_clicked() |
{ | { | ||
− | + | QThread* thread = new QThread; | |
− | + | ||
− | + | MyClass* myClass = new MyClass; | |
− | connect( | + | myClass->moveToThread(thread); |
− | + | connect(thread, SIGNAL(started()), myClass, SLOT(start())); | |
− | + | connect(myClass, SIGNAL(finished()), thread, SLOT(quit())); | |
− | + | thread->start(); | |
− | + | //a->wait(); | |
− | + | ||
− | + | ||
+ | std::cout << "exit." << std::endl; | ||
} | } | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</source> | </source> | ||
==form.h== | ==form.h== | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | #ifndef | + | #ifndef FORM_H |
− | #define | + | #define FORM_H |
− | #include " | + | #include "ui_form.h" |
− | + | class Form : public QWidget, private Ui::Form | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
{ | { | ||
− | + | Q_OBJECT | |
+ | |||
+ | public slots: | ||
+ | |||
+ | void on_btnOpen_clicked(); | ||
public: | public: | ||
− | + | Form(QWidget *parent = 0); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
}; | }; | ||
Revision as of 11:11, 16 December 2011
Timer.cpp
#include <QProgressDialog> #include <QApplication> #include "form.h" int main( int argc, char **argv ) { QApplication app(argc, argv); MainWindow window; window.show(); return app.exec(); }
form.cpp
#include <QtGui> #include <QImage> #include "form.h" #include "MyClass.h" #include <iostream> Form::Form(QWidget *parent) : QWidget(parent) { setupUi(this); } void Form::on_btnOpen_clicked() { QThread* thread = new QThread; MyClass* myClass = new MyClass; myClass->moveToThread(thread); connect(thread, SIGNAL(started()), myClass, SLOT(start())); connect(myClass, SIGNAL(finished()), thread, SLOT(quit())); thread->start(); //a->wait(); std::cout << "exit." << std::endl; }
form.h
#ifndef FORM_H #define FORM_H #include "ui_form.h" class Form : public QWidget, private Ui::Form { Q_OBJECT public slots: void on_btnOpen_clicked(); public: Form(QWidget *parent = 0); }; #endif
main.ui
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>205</width> <height>169</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"> <widget class="QPushButton" name="btnStart"> <property name="geometry"> <rect> <x>60</x> <y>90</y> <width>91</width> <height>28</height> </rect> </property> <property name="text"> <string>Start</string> </property> </widget> </widget> </widget> <resources/> <connections/> </ui>
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) PROJECT(Timer) FIND_PACKAGE(Qt4 REQUIRED) INCLUDE(${QT_USE_FILE}) QT4_WRAP_UI(UISrcs main.ui) QT4_WRAP_CPP(MOCSrcs form.h) include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) ADD_EXECUTABLE(Timer Timer.cpp form.h form.cpp ${UISrcs} ${MOCSrcs}) TARGET_LINK_LIBRARIES(Timer ${QT_LIBRARIES})