当前位置:   article > 正文

C++-UI入门_c++ ui

c++ ui

1、QWidget类

QWidget类时所有组件和窗口的基类。内部包含了一些最基础的界面特性。

常用属性:

1.1修改坐标

  • x : const int

横坐标,每个图形的左上角为定位点,横轴的零点在屏幕的最左边,正方向向右。

  • y : const int

纵坐标,每个图形的左上角为定位点,纵轴的零点在屏幕的最上面,正方向向下。

虽然横坐标与纵坐标无法直接修改,但是可以通过下面的函数间接修改。

需要注意的是,位置包含边框。

  1. // 参数1:新的横坐标
  2. // 参数2:新的纵坐标
  3. void move(int x, int y)

1.2修改宽高

  • width : const int

宽度

  • height : const int

高度

无法直接进行修改,但是通过函数:不包括边框

  1. // 参数1:新的宽度
  2. // 参数2:新的高度
  3. void resize(int w, int h)

下面的函数可以同时设置上述四个属性:

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

1.3修改样式   stylesheet

  • styleSheet : QString

样式表,QString为Qt的字符串类型,样式表使用QSS语法(模仿的CSS语法)。

  1. #include "dialog.h"
  2. // 构造函数定义
  3. // parent 参数
  4. Dialog::Dialog(QWidget *parent)
  5. : QDialog(parent) // 透传构造
  6. {
  7. // 移动w窗口到200200位置
  8. move(200,200);
  9. // 设置窗口宽度,以及窗口高度
  10. resize(200,600);
  11. // 设置样式表(设置窗口背景为红色)
  12. setStyleSheet("background-color:red");
  13. qDebug() << "构造函数 hello world";
  14. }
  15. // 析构函数类外定义
  16. Dialog::~Dialog()
  17. {
  18. }

2、添加若干子组件

上面的窗口中什么都没有,实际上可以向窗口中添加若干组件,实现不同的显式和交互效果。本节以QPushButton(按压式按钮)组件。

QPushButton要持续存在,直到窗口关闭,因此使用堆内存。按照C++的内存回收机制,子组件应该在父窗口的构造函数中创建,在析构函数中销毁。

QPushButton构造函数:

  1. // 参数1:按钮上显式的文字
  2. // 参数2:现阶段可以认为是给当前组件设置父窗口
  3. QPushButton:: QPushButton(const QString & text, QWidget * parent = 0)

dialog.h

  1. #ifndef DIALOG_H
  2. #define DIALOG_H
  3. #include <QDialog>
  4. #include <QDebug>
  5. #include <QPushButton>//按钮头文件
  6. class Dialog : public QDialog
  7. {
  8.     Q_OBJECT
  9. public:
  10.     Dialog(QWidget *parent = 0);
  11.     ~Dialog();
  12.     QPushButton *btn;   // 成员变量
  13. };
  14. #endif // DIALOG_H

dialog.cpp

  1. #include "dialog.h"
  2. // 构造函数定义
  3. // parent 参数
  4. Dialog::Dialog(QWidget *parent)
  5. : QDialog(parent) // 透传构造
  6. {
  7. // 移动w窗口到200200位置
  8. move(200,200);
  9. // 设置窗口宽度,以及窗口高度
  10. resize(200,600);
  11. // 设置样式表(设置窗口背景为红色)
  12. setStyleSheet("background-color:red");
  13. // 创建一个按钮对象,头文件<QPushButton>, 且头函数内声明,主函数调用
  14. // 参数1:按钮显式的内容
  15. // 参数2:在当前对象窗口中创建一个按钮,this是指向当前对象
  16.     btn = new QPushButton("你好",this);
  17.     btn->move(50,200);
  18. qDebug() << "构造函数 hello world";
  19. }
  20. // 析构函数类外定义
  21. Dialog::~Dialog()
  22. {
  23. // C++内存回收
  24.     delete btn;
  25. }

以下是一个预设的QPushButton的样式表,可以根据实际情况自行改动。

  1. #define QPushButton_STYTLE (QString("\
  2. /*按钮普通态*/\
  3. QPushButton\
  4. {\
  5.     font-family:Microsoft Yahei;\
  6.     /*字体大小为20点*/\
  7.     font-size:20pt;\
  8.     /*字体颜色为白色*/\
  9.     color:white;\
  10.     /*背景颜色*/\
  11.     background-color:rgb(14 , 150 , 254);\
  12.     /*边框圆角半径为8像素*/\
  13.     border-radius:8px;\
  14. }\
  15. /*按钮悬停态*/\
  16. QPushButton:hover\
  17. {\
  18.     /*背景颜色*/\
  19.     background-color:rgb(100 , 137 , 255);\
  20. }\
  21. /*按钮按下态*/\
  22. QPushButton:pressed\
  23. {\
  24.     /*背景颜色*/\
  25.     background-color:rgb(14 , 135 , 10);\
  26.     /*左内边距为3像素,让按下时字向右移动3像素*/\
  27.     padding-left:3px;\
  28.     /*上内边距为3像素,让按下时字向下移动3像素*/\
  29.     padding-top:3px;\
  30. }"))

推荐两个配色网站:

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

Color Palette Generator - Create Beautiful Color Schemes

dialog.h

  1. #ifndef DIALOG_H
  2. #define DIALOG_H
  3. #include <QDialog>
  4. #include <QDebug> // 头文件
  5. #include <QPushButton> // 按钮类
  6. #define QPushButton_STYTLE (QString("\
  7. /*按钮普通态*/\
  8. QPushButton\
  9. {\
  10.     font-family:Microsoft Yahei;\
  11.     /*字体大小为20点*/\
  12.     font-size:20pt;\
  13.     /*字体颜色为白色*/\
  14.     color:white;\
  15.     /*背景颜色*/\
  16.     background-color:rgb(14 , 150 , 254);\
  17.     /*边框圆角半径为8像素*/\
  18.     border-radius:8px;\
  19. }\
  20. /*按钮悬停态*/\
  21. QPushButton:hover\
  22. {\
  23.     /*背景颜色*/\
  24.     background-color:#87e2ff;\
  25. }\
  26. /*按钮按下态*/\
  27. QPushButton:pressed\
  28. {\
  29.     /*背景颜色*/\
  30.     background-color:#0a89b2;\
  31.     /*左内边距为3像素,让按下时字向右移动3像素*/\
  32.     padding-left:3px;\
  33.     /*上内边距为3像素,让按下时字向下移动3像素*/\
  34.     padding-top:3px;\
  35. }"))
  36. class Dialog : public QDialog
  37. {
  38.     Q_OBJECT
  39. public:
  40. Dialog(QWidget *parent = 0);
  41. ~Dialog();
  42. private:
  43. QPushButton* btn; // 成员变量
  44. };
  45. #endif // DIALOG_H

dialog.cpp

  1. #include "dialog.h"
  2. Dialog::Dialog(QWidget *parent)
  3. : QDialog(parent)
  4. {
  5. // 移动w到200,200的位置
  6. move(200,200);
  7. // 设置w的宽高
  8. resize(200,600);
  9. // 创建子组件对象
  10. // 参数2同时使用了this指针+多态的用法
  11.     btn = new QPushButton("你好",this);
  12.     btn->move(50,200);
  13.     btn->resize(100,100);
  14. // 设置样式表给按钮对象,样式表在头函数内声明。
  15.     btn->setStyleSheet(QPushButton_STYTLE);
  16. }
  17. Dialog::~Dialog()
  18. {
  19. // C++内存回收
  20.     delete btn;
  21. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/526403
推荐阅读
相关标签
  

闽ICP备14008679号