Qt/Widgets/Thread

From ProgrammingExamples
< Qt
Revision as of 11:13, 16 December 2011 by Daviddoria (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

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;
}

Thread.cxx

#include <QApplication>
#include <QObject>
#include <QThread>
 
#include <iostream>
 
#include "form.h"
 
int main(int argc, char*argv[])
{
  QApplication app(argc, argv);
 
  Form form;
 
  form.show();
 
  return app.exec();
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
 
PROJECT(Thread)
 
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
 
include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
 
ADD_EXECUTABLE(Thread Thread.cpp)# ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(Thread ${QT_LIBRARIES})