-
UID:74067
-
- 注册时间2009-02-06
- 最后登录2017-09-14
- 在线时间15小时
-
- 发帖17
- 搜Ta的帖子
- 精华0
- 金钱170
- 威望18
- 贡献值0
- 好评度17
-
访问TA的空间加好友用道具
|
—
本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02)
—
我是新手,第一次接触QT4,想用Qt4写一个简单的Qthread小程序,只要能实现点一下按钮就自动循环改变label里面的文字就行了,可我弄了半天,网上查了半天还是不会,请大家帮我看看我哪里错了,谢谢。 ui很简单,一个label两个按钮,一个按钮按了就循环5次改变label里面的文字,另一个按了退出 用uic自动生成的.h文件 mainform.h - /********************************************************************************
- ** Form generated from reading ui file 'mainform.ui'
- **
- ** Created: Wed Apr 15 03:00:33 2009
- ** by: Qt User Interface Compiler version 4.4.3
- **
- ** WARNING! All changes made in this file will be lost when recompiling ui file!
- ********************************************************************************/
- #ifndef MAINFORM_H
- #define MAINFORM_H
- #include <QtCore/QLocale>
- #include <QtCore/QVariant>
- #include <QtGui/QAction>
- #include <QtGui/QApplication>
- #include <QtGui/QButtonGroup>
- #include <QtGui/QDialog>
- #include <QtGui/QHBoxLayout>
- #include <QtGui/QLabel>
- #include <QtGui/QPushButton>
- #include <QtGui/QSpacerItem>
- #include <QtGui/QWidget>
- QT_BEGIN_NAMESPACE
- class Ui_mainForm
- {
- public:
- QLabel *label;
- QWidget *widget;
- QHBoxLayout *horizontalLayout;
- QSpacerItem *horizontalSpacer;
- QPushButton *pushButton_1;
- QSpacerItem *horizontalSpacer_2;
- QPushButton *pushButton_2;
- QSpacerItem *horizontalSpacer_3;
- void setupUi(QDialog *mainForm)
- {
- if (mainForm->objectName().isEmpty())
- mainForm->setObjectName(QString::fromUtf8("mainForm"));
- mainForm->setWindowModality(Qt::NonModal);
- mainForm->resize(436, 236);
- mainForm->setLocale(QLocale(QLocale::English, QLocale::UnitedKingdom));
- label = new QLabel(mainForm);
- label->setObjectName(QString::fromUtf8("label"));
- label->setGeometry(QRect(40, 20, 341, 151));
- widget = new QWidget(mainForm);
- widget->setObjectName(QString::fromUtf8("widget"));
- widget->setGeometry(QRect(9, 195, 418, 32));
- horizontalLayout = new QHBoxLayout(widget);
- horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
- horizontalLayout->setContentsMargins(0, 0, 0, 0);
- horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout->addItem(horizontalSpacer);
- pushButton_1 = new QPushButton(widget);
- pushButton_1->setObjectName(QString::fromUtf8("pushButton_1"));
- horizontalLayout->addWidget(pushButton_1);
- horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout->addItem(horizontalSpacer_2);
- pushButton_2 = new QPushButton(widget);
- pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
- horizontalLayout->addWidget(pushButton_2);
- horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout->addItem(horizontalSpacer_3);
- retranslateUi(mainForm);
- QObject::connect(pushButton_2, SIGNAL(clicked()), mainForm, SLOT(close()));
- QMetaObject::connectSlotsByName(mainForm);
- } // setupUi
- void retranslateUi(QDialog *mainForm)
- {
- mainForm->setWindowTitle(QApplication::translate("mainForm", "TCP Server", 0, QApplication::UnicodeUTF8));
- label->setText(QString());
- pushButton_1->setText(QApplication::translate("mainForm", "Run", 0, QApplication::UnicodeUTF8));
- pushButton_2->setText(QApplication::translate("mainForm", "Exit", 0, QApplication::UnicodeUTF8));
- Q_UNUSED(mainForm);
- } // retranslateUi
- };
- namespace Ui {
- class mainForm: public Ui_mainForm {};
- } // namespace Ui
- QT_END_NAMESPACE
- #endif // MAINFORM_H
然后是main.cpp - #include <QApplication>
- #include "TCPServer.h"
- int main(int argc, char **argv)
- {
- QApplication app(argc, argv);
- TCPServer *tcpserver= new TCPServer;
- return tcpserver->exec();
- }
TCPServer.h - #ifndef DLG_H
- #define DLG_H
- #include <QDialog>
- #include <mainform.h>
- #include <qthread.h>
- class TCPServer : public QDialog
- {
- Q_OBJECT
- public:
- TCPServer();
- public slots:
- void runtcp();
- private:
- Ui::mainForm ui;
- };
- class MyThread : public QThread
- {
- public:
- virtual void run();
- private:
- Ui::mainForm ui;
- };
- #endif
TCPServer.cpp - #include "TCPServer.h"
- TCPServer::TCPServer()
- {
- ui.setupUi(this);
- QObject::connect(ui.pushButton_1, SIGNAL(clicked()), this, SLOT(runtcp()));
- QObject::connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(close()));
- }
- void TCPServer::runtcp()
- {
- MyThread a;
- a.start();
- }
- void MyThread::run()
- {
- QString strResult;
- for( int count = 0; count < 5; count++ ) {
- sleep( 1 );
- strResult.sprintf("Ping%d!\n",count);
- ui.label->setText(strResult);
- }
- }
谢谢大家帮我看看哪里错了,编译没有问题,就是运行没反应,有的时候一点按钮就退出了。
|