QThread基础实例
来源:优易学  2011-12-8 11:32:29   【优易学:中国教育考试门户网】   资料下载   IT书店
  //threadTest.h
  #ifndef THREADTEST_H
  #define THREADTEST_H
  #include <qthread.h>
  #include "test.h"
  class MyThread : public QThread
  {
  protected :
  virtual void run();
  };
  MyThread myThread;
  void Test::newSlot()
  {
  myThread.start();
  }
  #endif
  //threadTest.cpp
  #include <QDialog>
  void MyThread::run()
  {
  for(int i=0;i <100;i++)
  {
  printf("new value i is:%d",i);
  //QMessageBox::information(this,tr("info"),tr("load dll OK!"));
  //QMessageBox::information(this, tr("Empty Search "),"click Find.");
  //Test m;
  //m.show();
  qDebug("mhf");
  }
  /*
  QDialog *dialog = new QDialog(0,”popup”,FALSE);
  dialog->setCaption(“A QDialog Window”);
  dialog->setMinimumSize(200,80);
  dialog->setMaximumSize(200,80);
  dialog->show();
  */
  }
  //test.cpp
  #include "test.h"
  #include <qvariant.h>
  #include <qlineedit.h>
  #include <qpushbutton.h>
  #include <qtextedit.h>
  #include <qlayout.h>
  #include <qtooltip.h>
  #include <qwhatsthis.h>
  #include <qimage.h>
  #include <qpixmap.h>
  #include <QVBoxLayout>
  /*
  * Constructs a Test as a child of ’parent’, with the
  * name ’name’ and widget flags set to ’f’.
  */
  Test::Test( QWidget* parent ): QWidget( parent=0 )
  {
  this->setWindowTitle("w");
  this->resize(250, 50);
  textEdit1 = new QTextEdit( "textEdit1" );
  textEdit1->setGeometry( QRect( 10, 60, 570, 291 ) );
  lineEdit1 = new QLineEdit( "lineEdit1" );
  lineEdit1->setGeometry( QRect( 10, 360, 571, 31 ) );
  pushButton2 = new QPushButton( "pushButton2" );
  pushButton2->setGeometry( QRect( 380, 400, 201, 41 ) );
  pushButton1 = new QPushButton( "pushButton1" );
  pushButton1->setGeometry( QRect( 10, 10, 261, 41 ) );
  //languageChange();
  resize( QSize(600, 480).expandedTo(minimumSizeHint()) );
  // signals and slots connections
  connect( pushButton1, SIGNAL( clicked() ), this, SLOT( newSlot() ) );
  connect( pushButton2, SIGNAL( clicked() ), this, SLOT( languageChange() ) );
  //add
  QVBoxLayout *layout=new QVBoxLayout;
  layout->addWidget(textEdit1);
  layout->addWidget(lineEdit1);
  layout->addWidget(pushButton1);
  layout->addWidget(pushButton2);
  this->setLayout(layout);
  this->resize(350, 200);
  }
  /*
  * Destroys the object and frees any allocated resources
  */
  Test::~Test()
  {
  // no need to delete child widgets, Qt does it all for us
  }
  /*
  * Sets the strings of the subwidgets using the current
  * language.
  */
  void Test::languageChange()
  {
  this->setWindowTitle("m");
  //printf("new value i is");
  pushButton2->setText( tr( "pushButton2" ) );
  pushButton1->setText( tr( "pushButton1" ) );
  }
  //test.h
  #ifndef TEST_H
  #define TEST_H
  #include <qvariant.h>
  #include <qwidget.h>
  class QVBoxLayout;
  class QHBoxLayout;
  class QGridLayout;
  class QLineEdit;
  class QPushButton;
  class QTextEdit;
  class Test : public QWidget
  {
  Q_OBJECT
  public:
  Test( QWidget* parent = 0 );
  ~Test();
  QTextEdit* textEdit1;
  QLineEdit* lineEdit1;
  QPushButton* pushButton2;
  QPushButton* pushButton1;
  public slots:
  virtual void newSlot();
  protected:
  protected slots:
  virtual void languageChange();
  };
  #endif // TEST_H
  main.cpp
  #include <qapplication.h>
  #include "test.h"
  int main( int argc, char ** argv )
  {
  QApplication a( argc, argv );
  Test w;
  w.show();
  a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
  return a.exec();
  }
  /////////////
  调试运行
  gdb *.exe
  run step点击按钮就可以看到输出调试信息。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训