Qt实践录:界面设置小记

本文记录QT界面、窗体,等等的设置。

QMessageBox使用

1
2
3
4
5
6
7
// 一个提示语
QMessageBox msg(QMessageBox::NoIcon, tr("title"), tr("exit?"), QMessageBox::Yes | QMessageBox::No, NULL);
if (msg.exec() == QMessageBox::Yes)
{
QApplication* app;
app->exit(0); // 退出程序
}

窗口最大化和最小化

主窗口初始化函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
    // 设置窗体最大化和最小化
Qt::WindowFlags winFlags = Qt::Dialog;
winFlags |= Qt::WindowMinMaxButtonsHint; // 同时最大最小化
// winFlags |= Qt::WindowMinimizeButtonHint;
// winFlags |= Qt::WindowMaximizeButtonHint;
winFlags |= Qt::WindowCloseButtonHint;

setWindowFlags(winFlags);
// 显示策略,不调用默认showNormal
// showMinimized();
// showMaximized();
// showFullScreen();
// showNormal();

窗体可拖动

默认只有标题框可拖动。头文件及函数声明(实际是重载):

1
2
3
4
5
6
7
8
9
#include <QMouseEvent>

void mousePressEvent(QMouseEvent *event); // 鼠标按下
void mouseMoveEvent(QMouseEvent *event); // 鼠标移动
void mouseReleaseEvent(QMouseEvent *event); // 鼠标释放

int m_pressMouse; // 当点击下拉框时,窗口跳动,加上判断
QPoint m_startPos;
QPoint m_windowPos;

实现函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_startPos = event->globalPos();
m_windowPos = this->frameGeometry().topLeft();
m_pressMouse = 1;
}
else if(event->button() == Qt::RightButton)
{

}
}

void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() == Qt::LeftButton)
{
if (m_pressMouse)
{
QPoint relativePos = event->globalPos() - m_startPos;
this->move(m_windowPos + relativePos );

}
}
else if(event->button() == Qt::RightButton)
{

}
}

void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
m_pressMouse = 0;
}

制作logo.ico,放至工程目录。
方法1:
在.pro工程文件末尾添加:RC_ICONS = logo.ico。编译即可。不改代码。
方法2:
新建 demo.rc 文件,内容:

1
IDI_ICON1   ICON   DISCARDABLE   "logo.ico"

在.pro工程文件末尾添加:RC_FILE = demo.rc。编译,即可。不改代码。

方法3:
使用代码:

1
2
QPixmap pixmap(":/image/logo.ico");
this->setWindowIcon(pixmap);

图片资源

状态栏