QWidget类详解

一、QWidget的显示和隐藏

注意:槽函数在子线程中直接调用会发生崩溃,但是信号可以在子线程中调用,在QWidget的子类中绑定信号槽即可。

二、QWidget常用方法

  • hide():隐藏窗口。
  • show():显示窗口。
  • QRect &QWidget::geometry():可以获取窗口的x,y,weight,height。
  • setGeometry(int x, int y, int w, int h):设置窗口位置和窗口的宽度和高度。有重载该函数setGeometry(const QRect &)。
  • move(int x,int y):移动窗口位置。
  • resize(int w,int h):重置窗口的宽度和高度。

1. 子线程中调用信号函数实现窗口移动

MyThread.h

#include "qthread.h"
#include <QWidget>
class MyThread :public QThread
{
	Q_OBJECT

public:
	MyThread();
	~MyThread() { terminate(); };

	void run() {
		for (int i = 0; i < 1000; ++i)
		{
			Move(i, i);	//调用信号函数
			msleep(50);	//每次移动线程休眠50毫秒
		}
	};

signals:
	void Move(int x, int y);
};

窗口类中添加一个槽函数即可。

private slots:
	void slotMove(int x, int y) { QWidget::move(x, y); };

mian.cpp中绑定信号和槽,开启一个线程。

#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>
#include <QThread>
#include "MyThread.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
	QtWidgetsApplication1 w;
	w.show();

	MyThread thread;
	QObject::connect(&thread, SIGNAL(Move(int, int)), &w, SLOT(slotMove(int, int)));
	thread.start();
    return a.exec();
}

2. 窗口状态-最大化最小化全屏

  • void setWindowState(Qt::WindowStates state):设置窗口状态。WindowNoState:正常状态;WindowMinimized:最小化;WindowMaximized:最大化;WindowFullScreen:全屏;WindowActive:可以活动状态。
  • 也可以用QWidget提供的四个槽函数进行设置:void showFullScreen();void showMaximized();void showMinimized();void showNormal();

3. 定制窗口类型

  • setWindowFlags(Qt::WindowFlags type):设置窗体类型。Qt::FramelessWindowHint 无边框的窗体;

  • setWindowFlag(Qt::WindowType, bool on = true):
    函数重载,setWindowFlag(Qt::WindowMinimizeButtonHint,false),设置最小化按钮不显示,但是可以显示,但是不能点击。效果如下:
    在这里插入图片描述
    setWindowFlag(Qt::WindowMaximizeButtonHint,false) :设置最大化按钮不显示,效果如下:
    在这里插入图片描述
    setWindowFlag(Qt::WindowMinMaxButtonsHint,false):也可以同时设置最小化,最大化按钮不显示 ,效果如下:
    在这里插入图片描述
    setWindowFlags(Qt::WindowTitleHint | Qt::CustomizeWindowHint):标题栏保留,去除标题栏上的所有按钮。
    setWindowFlags(Qt::WindowCloseButtonHint):保留标题栏和关闭按钮。

  • setWindowFlags(Qt::CustomizeWindowHint);//设置窗口标题栏自定义

  • setWindowFlags(Qt::WindowMinimizeButtonHint);//设置窗口的标题栏只有最小化的按钮

  • setWindowFlags( Qt::WindowCloseButtonHint );//设置窗口的标题栏只有关闭的按钮

  • setWindowFlags(Qt::WindowStaysOnTopHint);//设置窗体一直置顶,并且不会抢焦点

  • this->setWindowFlags(this->windowFlags());//设置窗口为QT的默认属性

  • this->setWindowFlags(Qt::FramelessWindowHint));//设置窗体无边框,不可拖动拖拽拉伸

  • this->setWindowModality(Qt::WindowModal); //设置窗体为模态

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QwidgetQt的一个基本界面元素,用于创建各种窗口和小部件。Qwidget提供了一些常见的操作来管理它们的外观和行为。以下是Qwidget的一些常见操作: 1. 设置大小和位置:使用resize()和move()函数可以设置Qwidget的大小和位置。这两个函数都需要输入x、y坐标和宽度、高度参数。 2. 显示和隐藏:使用show()和hide()函数可以显示和隐藏Qwidget。show()函数将Qwidget设置为可见,而hide()函数将其设置为不可见。 3. 设置标题和图标:使用setWindowTitle()和setWindowIcon()函数可以设置Qwidget的标题和图标。setWindowTitle()函数需要输入字符串参数,而setWindowIcon()函数需要输入QIcon对象参数。 4. 响应鼠标和键盘事件:通过重写QWidget的mousePressEvent()、keyPressEvent()等事件处理函数,可以让Qwidget响应鼠标和键盘事件。 5. 绘制:通过重写QWidget的paintEvent()函数,可以在Qwidget上进行绘制操作。在paintEvent()函数中可以使用QPainter对象进行各种绘图操作。 6. 设置样式:使用setStyleSheet()函数可以设置Qwidget的样式表。样式表可以用来改变Qwidget的背景、字体、颜色等外观属性。 7. 布局:使用QLayout可以实现Qwidget的布局。QLayout提供了一些常见的布局方式,如水平布局、垂直布局、网格布局等。 8. 添加子控件:使用addWidget()函数可以添加子控件到Qwidget中。addWidget()函数需要输入QWidget对象参数。 9. 移除子控件:使用removeWidget()函数可以从Qwidget中移除子控件。removeWidget()函数需要输入QWidget对象参数。 10. 设置焦点:使用setFocus()函数可以设置Qwidget的焦点。当Qwidget获得焦点时,它将成为键盘事件的接收者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值