4.1、Qt 线程调用操作(隐藏窗口)

Qt 线程调用操作::隐藏窗口

  • 前言:
  • 头文件:qwidgettext.h
  • 线程头文件:XWidget.h
  • UI文件:
  • 主函数:main.cpp
  • 实现文件:qwidgettext.cpp
  • 线程实现文件:XWidget.cpp
  • ui界面布局样式

前言:

本文操作均为在vs2015+QT5.9.5版本中执行

头文件:qwidgettext.h

#pragma once

#include 
#include "ui_qwidgettext.h"

class QwidgetText : public QWidget
{
	Q_OBJECT

public:
	QwidgetText(QWidget *parent = Q_NULLPTR);

private:
	Ui::QwidgetTextClass ui;
};

线程头文件:XWidget.h

#pragma once
#include "qwidget.h"
class XWidget :public QWidget
{
	//凡是在自定义的子程序中涉及创建信号与槽都要添加Q_OBJECT这个宏定义
	Q_OBJECT
public:
	XWidget();
	virtual ~XWidget();
signals:
	void Hide();//创建一个自定义信号
};


UI文件:

/********************************************************************************
** Form generated from reading UI file 'qwidgettext.ui'
**
** Created by: Qt User Interface Compiler version 5.9.5
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_QWIDGETTEXT_H
#define UI_QWIDGETTEXT_H

#include 
#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE

class Ui_QwidgetTextClass
{
public:

    void setupUi(QWidget *QwidgetTextClass)
    {
        if (QwidgetTextClass->objectName().isEmpty())
            QwidgetTextClass->setObjectName(QStringLiteral("QwidgetTextClass"));
        QwidgetTextClass->resize(600, 400);

        retranslateUi(QwidgetTextClass);

        QMetaObject::connectSlotsByName(QwidgetTextClass);
    } // setupUi

    void retranslateUi(QWidget *QwidgetTextClass)
    {
        QwidgetTextClass->setWindowTitle(QApplication::translate("QwidgetTextClass", "QwidgetText", Q_NULLPTR));
    } // retranslateUi

};

namespace Ui {
    class QwidgetTextClass: public Ui_QwidgetTextClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_QWIDGETTEXT_H

主函数:main.cpp

//#include "qwidgettext.h"
#include 
#include 
#include 
#include "XWidget.h"
static XWidget *w = NULL;
//QWidget *w = NULL;
class XThread :public QThread
{
public:
	void run(){
		_sleep(3000);
		w->Hide();//隐藏窗口
	}

};
int main(int argc, char *argv[])
{
	//多线程操作
	QApplication a(argc, argv);
	w = new XWidget();//new创建一个窗口	
	XThread r;//调用XThread一定要在show()函数之前,这样在关闭窗口时会自动销毁。不然会崩
	w->show();//调用show显示窗口
	r.start();//调用多线程


	创建一个自己的QWidget
	//QApplication a(argc, argv);
	//QWidget w;
	//w.setWindowTitle("MY QWidget");//修改窗口标题
	//w.show();
	return a.exec();
}

实现文件:qwidgettext.cpp

#include "qwidgettext.h"

QwidgetText::QwidgetText(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
}

线程实现文件:XWidget.cpp

#include "XWidget.h"



XWidget::XWidget()
{
	//在此构建关联信号Hide()与槽hide(),在此用到的是隐藏函数hide属于QWidget
	connect(this, SIGNAL(Hide()), this, SLOT(hide()));
}


XWidget::~XWidget()
{
}

ui界面布局样式

4.1、Qt 线程调用操作(隐藏窗口)_第1张图片

你可能感兴趣的:(QT参考笔记,qt,ui,开发语言)