当前位置:  技术问答>linux和unix

新手求教QT4 Qthread线程问题!求帮忙看看code谢谢!

    来源: 互联网  发布时间:2016-05-29

    本文导语:  我是新手,第一次接触QT4,想用Qt4写一个简单的Qthread小程序,只要能实现点一下按钮就自动循环改变label里面的文字就行了,可我弄了半天,网上查了半天还是不会,请大家帮我看看我哪里错了,谢谢。 ui很简单,一...

我是新手,第一次接触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 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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 
#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 
#include 
#include 

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 setText(strResult);
        }
}



谢谢大家帮我看看哪里错了,编译没有问题,就是运行没反应,有的时候一点按钮就退出了。

|


晕,你自己好好看看,你用的是什么?QThread是这个类啊,你用的是TCPServer.我还以为你要写套接字呢.

QThread很好用啊,C_GUI_Programming_with_Qt_4.这本书(有文档),有用法个,例子代码啊,你入门QT看这本书就可以了.

|
main函数怎么回事?
试试

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    TCPServer *tcpserver= new TCPServer;
  //////////////////// 
tcpserver->show();  
//////////////////////
    return app.exec();



     


|
图形界面接触不多,帮你顶一下,楼下来解决吧...

    
 
 

您可能感兴趣的文章:

  • 新手求教:关于ftp命令的问题,请大家帮帮忙
  • 新手求教
  • 新手求教如何学习LINUX
  • linux 新手求教
  • 新手求教双系统开机启动问题
  • linux新手求教,ubuntu经常死机正常吗?
  • 新手求教——windows程序移植到unix下
  • 求教:新手安装red hat9 提示:cache line size too large
  • 求教——编译内核(新手大派送)
  • 新手求教:怎样去查找群组中有哪些用户?
  • 新手求教一个linux makefile的问题
  • 新手求教redhat7.3的启动问题!
  • 想通过交叉编译把open dpi移植到mips64目标平台上,新手求教??
  • 新手求教grep问题!
  • 新手简单问题求教
  • 网络新手求教!为何我的虚拟机ping不通物理机?
  • 【急】2道Linux Shell编程题,新手求教!!!
  • 新手求教LINUX下的原子操作该怎么写
  • 新手求教:安装问题
  • 新手求教。万分急:(
  • 高手请看过来,我有些问题,我是新手.关于线程的!
  • 新手关于线程调用的求救!应该不难
  • 关于线程,事件,消息!!!新手请教!
  • 新手,请教一个linux线程调度问题
  • (新手)请教这个线程的错误在哪?
  • 求助啊,新手对linux下线程同步的疑惑...
  • linux 多线程调试问题,新手,高人指点!!!!!!!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • 技术文章 iis7站长之家
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 新手请教啦~~能不能帮忙推荐几本书
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?
  • Java新手上路之问题
  • 我是一名新手,请问如何学java
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 新手求助!
  • 新手上路,怎样判断网卡是否安装成功?
  • !!新手求救!!
  • 新手在此多谢了:SUN的宠物商店
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3