QWidget
QWidget w; //创建QWidget对象
w.show(); //显示QWidget(包含子对象、槽函数)
w.hide(); //隐藏QWidget(包含子对象、槽函数)
QRect r = w.geometry(); //获取QWidget窗口坐标和大小,返回QRect
w.setGeometRY(x, y, width, height);
w.move(x, y);
w.resize(width, height);
w.setWindowState(Qt::WindowsMaximized); //设置窗口状态,可设置最小化、最大化、全屏
w.setWindowFlag(Qt::WindowCloseButtonHint, false); //设置窗口属性,可设置无边框、无标题栏
Example:自定义信号槽实现窗口移动
testmove.h
#pragma once
#include <QWidget>
class TestMove : public QWidget
{
Q_OBJECT
public:
TestMove(QWidget *parent = Q_NULLPTR);
public slots:
void move(int x, int y);
};
XThread.h
#pragma once
#include <QThread>
class XThread : public QThread
{
Q_OBJECT
public:
void run();
XThread();
virtual ~XThread();
signals:
void Move(int x, int y);
};
testmove.cpp
#include "testmove.h"
TestMove::TestMove(QWidget *parent) : QWidget(parent)
{
}
void TestMove::move(int x, int y)
{
QWidget::move(x, y);
}
XThread.cpp
#include "XThread.h"
void XThread::run()
{
for (int x = 0; x < 1000; ++x)
{
Move(x, x);
msleep(100);
}
}
XThread::XThread()
{
}
XThread::~XThread()
{
terminate(); //终止线程,不安全
}
main.cpp
#include "testmove.h"
#include "XThread.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TestMove w;
w.show();
w.resize(200, 200);
XThread xt;
QObject::connect(&xt, SIGNAL(Move(int, int)), &w, SLOT(move(int, int)));
xt.start();
return a.exec();
}