【工具介绍-Qt】计概大作业之二,在开始界面上画出按钮

由 联环己烷 发布

原理很简单,Qt中自带QPushButton类来帮你画按钮,定义这个头文件后就可以用QPushButton了。

关于它的更多功能,可以上网查找资料,我先介绍几个我用到的:

QPushButton

1.setParent(this)

更改这个按钮的父类。

在Qt中,存在一种叫做“对象树”的结构,其实本质上就是一种类的继承关系。“最有资历”的祖先是QObject,它的孩子是QWidgetQWidget是窗口们的父类,窗口又有窗口中的组件。凡是被挂到对象树上的组件,都会被自动画出,反之不会被画出。所以你创建一个组件后,要使用setParent来定义当前窗口为其父类。

2.setText("一段文字")

设置按钮的文字,没啥好说的

3.move(x,y)

设置按钮的坐标(左上角坐标,Qt的窗口坐标系是以左上角为原点,向右为x轴,向下为y轴的)

4.setFont(QFont)

设置按钮的字体,使用QFont型的参数,你可以使用("字体名称",大小,是否加粗,是否斜体)定义一种QFont型字体

5.setStyleSheet("")

可以使用字符串形式插入一段按钮样式的css代码

6.show()

总得把按钮画出来吧!

关于窗体的设置

有一些内置的函数可以设置窗体的参数,例如固定大小和标题栏显示的文字:

this->setWindowTitle("不围棋");

this->setFixedSize(800,600);

信号和槽

最后,再简单介绍一下信号和槽的概念。信号可以理解为产生的某种效果,槽则是对该信号的反应。例如用户点击按钮,“点击”就是一种信号,点击后关闭窗口,“关闭窗口”就是槽。

Qt内置了很多信号和槽,使用connect(信号发出对象,信号,槽执行对象,槽)可以连接一种信号和一种槽,譬如你想要用户点击按钮exits后关闭窗口,只需要这么写:

connect(exits,&QPushButton::clicked,this,&QWidget::close);

效果展示

所以我当前写的登录界面如下:

#include "LoginPage.h"
#include "ui_LoginPage.h"
#include <QPushButton> //按钮头文件

LoginPage::LoginPage(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::LoginPage)
{
    ui->setupUi(this);
}

LoginPage::~LoginPage()
{
    delete ui;
}

void LoginPage::paintEvent(QPaintEvent *event) {
    this->setWindowTitle("不围棋");//设置顶栏名称
    this->setFixedSize(800,600);//固定窗口大小

    QFont ButtonFont("黑体",14,1);//字体,大小,加粗,倾斜

    QPushButton *start=new QPushButton("开始游戏",this);
    start->move(75,340);//设置按钮位置
    start->setFont(ButtonFont);//设置按钮上的字体
    //DarkSalmon和PeachPuff
    start->setStyleSheet("QPushButton{\
                            background: rgb(113,123,118);\
                            color: #fff;\
                            line-height: 28px;\
                            border-radius:5px;\
                            height: 40px;\
                            width: 120px;}\
                          QPushButton:hover{\
                            background: rgb(166,174,180);}");
    start->show();

    QString ButtonStyle="QPushButton{\
                 background: rgb(215,221,225);\
                 color: rgb(58,66,72);\
                 line-height: 28px;\
                 border-radius:5px;\
                 height: 40px;\
                 width: 120px;}\
               QPushButton:hover{\
                 background: rgb(194,207,213);}";

    QPushButton *introduce=new QPushButton("规则介绍",this);
    introduce->move(75,390);
    introduce->setFont(ButtonFont);
    introduce->setStyleSheet(ButtonStyle);
    introduce->show();

    QPushButton *load=new QPushButton("读取存档",this);
    load->move(75,440);
    load->setFont(ButtonFont);
    load->setStyleSheet(ButtonStyle);
    load->show();

    QPushButton *exits=new QPushButton("退出游戏",this);
    exits->move(75,490);
    exits->setFont(ButtonFont);
    exits->setStyleSheet(ButtonStyle);
    exits->show();
    connect(exits,&QPushButton::clicked,this,&QWidget::close);
}

效果展示:

s1.png


暂无评论

发表评论


京公网安备 11010802033049号