现在的位置: 首页 > 综合 > 正文

一个QThread例子

2014年02月13日 ⁄ 综合 ⁄ 共 3177字 ⁄ 字号 评论关闭

//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点击按钮就可以看到输出调试信息

抱歉!评论已关闭.