Qt ui基础

该文介绍了Qt中的QWidget类,作为可视化组件和窗口的基类,包括其基本属性如width、height、x、y以及相关函数。接着展示了如何添加子组件,以QPushButton为例,说明添加方法和调整大小、位置。最后提到了Qt的样式表(QSS)功能,用于设置组件样式,文中给出了颜色配置和不同状态下的样式示例。

1. QWidget类

QWidget类是所有可视化组件和窗口的基类,因此QWidget中成员可以继承给众多派生类使用。

QWidget最基础的属性:

  • width : const int

宽度,单位像素

可以通过int width() const获得数值,即getter

  • height : const int

高度,单位像素

getter:int height() const

  • x : const int

横坐标,单位像素,原点左上角,正方向右

getter:int x() const

  • y : const int

纵坐标,单位像素,原点左上角,正方向下

getter:int y() const

QWidget最基础的函数:

  • void resize(int w, int h)

重定义宽高

  • void move(int x, int y)

移动到设定的坐标处,所有的组件和窗口以左上角为定位点

  • void setGeometry(int x, int y, int w, int h)

同事设置坐标和宽高

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 头文件
#include <QDebug>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    // 重定义宽高
    resize(1000,240);
    // this指针指向主函数中的w对象
    int w = this->width();
    int h = height();
    // 输出
    qDebug() << w << h;

    // 获得位置
    int x = this->x();
    int y = this->y();
    qDebug() << x << y; // 0,0 不准,因为窗口对象还在创建中
    // 移动
    move(100,100);

    // 同时设置坐标和宽高
    setGeometry(400,400,200,200);
}

Dialog::~Dialog()
{

}

2. 添加子组件

以最常见按钮(QPushButton)为例,讲解在窗口中添加子组件的方法。

QPushButton的构造函数如下:

  • QPushButton::QPushButton(const QString & text, QWidget * parent = 0)

参数1:按钮显示的文字

参数2:按钮在哪个对象上

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 头文件
#include <QPushButton>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    // 私有成员变量
    QPushButton* btn;
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    resize(400,400);
    // 创建一个按钮对象
    // 参数2是使用this指针结合多态传参
    btn = new QPushButton("初十",this);
    // 更改按钮大小
    btn->resize(100,100);
    // 移动按钮位置,注意坐标是窗口内部的相对坐标
    btn->move(100,100);
}

Dialog::~Dialog()
{
    // 释放按钮内存
    delete btn;
}

3. 样式表

Qt可以使用QSS语法设置组件的样式效果。

颜色的配置可以通过以下几个方法:

  • QQ截图
  • 在线色表+颜色进制转换

在线颜色选择器 | RGB颜色查询对照表

  • 色彩搭配

Color Palette Generator - Create Beautiful Color Schemes

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 头文件
#include <QPushButton>

#define QPushButton_STYTLE (QString("\
/*按钮普通态*/\
QPushButton\
{\
    font-family:Microsoft Yahei;\
    /*字体大小为20点*/\
    font-size:20pt;\
    /*字体颜色为粉色*/\
    color:rgb(238, 210, 238);\
    /*背景颜色*/\
    background-color:rgb(197,146,163);\
    /*边框圆角半径为8像素*/\
    border-radius:8px;\
}\
/*按钮悬停态*/\
QPushButton:hover\
{\
    /*背景颜色*/\
    background-color:#9F79EE;\
}\
/*按钮按下态*/\
QPushButton:pressed\
{\
    /*背景颜色*/\
    background-color:rgb(14 , 135 , 10);\
    /*左内边距为3像素,让按下时字向右移动3像素*/\
    padding-left:3px;\
    /*上内边距为3像素,让按下时字向下移动3像素*/\
    padding-top:3px;\
}"))

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    // 私有成员变量
    QPushButton* btn;
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    resize(400,400);
    btn = new QPushButton("初十",this);
    // 设置样式表
    btn->setStyleSheet(QPushButton_STYTLE);

    btn->resize(100,100);
    btn->move(100,100);
}

Dialog::~Dialog()
{
    delete btn;
}

 

Qt UI是用于创建图形用户界面(GUI)的工具和框架。以下是关于Qt UI的多方面信息: ### Qt UI基础使用 在Qt Creator中可以通过简单的操作生成标准的QMainWindow框架程序。以生成的`mainwindow.cpp`文件为例,代码如下: ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } ``` 在这个示例中,`ui`是`Ui::MainWindow`类的一个实例,`setupUi`函数用于将设计好的UI界面与`MainWindow`类关联起来[^1]。 ### 轻量级Qt UI库QSkinny QSkinny是一个轻量级Qt UI库,用QSkinny API写代码的方式和用QtWidgets差不多,它们有类似的控件,如文本标签、按钮、布局、对话框等。其包含的层次结构如下: - QSkinny:C++ UI控件 - QML engine:解析UI文件的声明式/JavaScript引擎 - QtQuick:UI控件的基础框架(包含了诸如x/y坐标和焦点的处理) - Qt scene graph:利用硬件加速的绘图单元 - OpenGL:利用硬件加速的绘图API - QtWidgets:为桌面用户设计的C++ UI控件 - Qt raster paint engine:软件(非硬件加速)绘图引擎 - QPainter API:可以绘制图形、图像和文字的API 下面是一个QSkinny换肤的例子,将所有按钮的文字设置为蓝色,背景设置为绿色,内边距设置为10像素: ```cpp setGradient( QskPushButton::Panel, Qt::green ); setColor( QskPushButton::Text, Qt::blue ); setMargins( QskPushButton::Panel | QskAspect::Padding, 10 ); ``` 该代码展示了如何使用QSkinny对按钮的外观进行定制[^2]。 ### 开发技巧 - **可视化设计**:Qt Creator提供了可视化的UI设计器,可通过拖放控件的方式快速搭建界面,提高开发效率。 - **布局管理**:合理使用布局管理器(如QVBoxLayout、QHBoxLayout等),能使界面在不同分辨率和窗口大小下保持良好的显示效果。 - **信号与槽机制**:这是Qt的核心机制之一,用于实现对象之间的通信。通过连接信号和槽函数,可以实现用户操作(如按钮点击)与程序逻辑的交互。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值