【QT】常用控件-中

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:QT

在这里插入图片描述


👉🏻QPushButton

QPushButton是Qt框架中的一种基本控件,广泛应用于图形用户界面(GUI)设计中,用于触发各种用户交互操作。以下是关于QPushButton的详细介绍:

🍧 一、基本概念

QPushButton是Qt中最常用的控件之一,它提供了一个可点击的按钮,用户可以通过点击按钮来执行特定的应用程序操作。例如,在对话框中常见的“确定”、“取消”等按钮都是QPushButton的实例。

🍧 二、主要功能与特性

  1. 文本显示:QPushButton不仅可以显示简单的文本标签,还可以通过在文本中使用和号(&)前缀来指定快捷键,如“&Save”表示可以通过Alt+S快捷键来激活该按钮。

  2. 图标显示:QPushButton支持在按钮上显示图标或图片,可以使用setIcon方法设置按钮的图标,使用setStyleSheet方法设置背景图片。

  3. 样式定制:支持丰富的样式设置,包括字体、颜色、大小等。可以使用setFont方法设置按钮的字体,使用setStyleSheet方法设置颜色和其他样式。

  4. 信号与槽机制:QPushButton通过信号与槽机制来处理用户点击事件。主要信号包括clicked(点击时发出)、pressed(按下时发出)、released(释放时发出)等,可以与相应的槽函数连接以实现特定的功能。

  5. 状态管理:支持启用和禁用按钮,以及切换按钮的选中状态。禁用状态下的按钮无法被点击,而切换选中状态的按钮(通过setCheckable方法设置)可以在选中和未选中状态之间切换。

  6. 自动默认与默认按钮:具有autoDefault和default属性,用于控制按钮是否自动成为默认按钮或是否为默认按钮。默认按钮在对话框中通常可以通过Enter或Return键激活。

  7. 扁平化设计:支持扁平化设计(flat属性),当flat属性为true时,按钮边框不会凸起,使界面看起来更简洁。

🍧 三、常用方法与属性

  1. 常用方法

    • setText(const QString &text):设置按钮上的文本。
    • setIcon(const QIcon &icon):设置按钮上的图标。
    • setIconSize(const QSize &size):设置图标的大小。
    • setAutoDefault(bool set):设置按钮是否在得到焦点时自动变为默认按钮。
    • setDefault(bool set):设置按钮是否是默认按钮。
    • setFlat(bool set):设置按钮是否是扁平的。
    • setEnabled(bool enabled):设置按钮是否可用。
  2. 常用属性

    • text:按钮上的文本。
    • icon:按钮上的图标。
    • iconSize:图标的大小。
    • autoDefault:按钮是否是自动默认按钮。
    • default:按钮是否是默认按钮。
    • flat:按钮边框是否凸起。

🍧四、使用示例

以下是一个简单的QPushButton使用示例,展示了如何创建一个按钮并设置其文本和图标:

#include <QApplication>
#include <QPushButton>
#include <QIcon>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton button("Click Me!");
    QIcon icon("path/to/icon.png");
    button.setIcon(icon);
    button.setIconSize(QSize(32, 32));

    button.show();

    return app.exec();
}

在这个示例中,我们首先包含了必要的头文件,然后在main函数中创建了一个QPushButton对象,并设置了其文本和图标。最后,我们调用了show方法来显示按钮,并通过app.exec()进入应用程序的主事件循环。

🍧 五、总结

QPushButton是Qt框架中功能丰富且常用的控件之一,它提供了文本显示、图标显示、样式定制、信号与槽机制以及状态管理等功能。通过合理使用QPushButton,可以设计出用户友好且功能强大的图形用户界面。

带有快捷键的按钮

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置图标
    ui->pushButton_dog->setIcon(QIcon(":/dog.png"));
    ui->pushButton_up->setIcon(QIcon(":/up.png"));
    ui->pushButton_down->setIcon(QIcon(":/down.png"));
    ui->pushButton_left->setIcon(QIcon(":/left.png"));
    ui->pushButton_right->setIcon(QIcon(":/right.png"));

    //设置快捷键
    ui->pushButton_up->setShortcut(QKeySequence("w"));
    ui->pushButton_down->setShortcut(QKeySequence("s"));
    ui->pushButton_left->setShortcut(QKeySequence("a"));
    ui->pushButton_right->setShortcut(QKeySequence("d"));
}

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


void Widget::on_pushButton_up_clicked()
{
    QRect rect = ui->pushButton_dog->geometry();
    ui->pushButton_dog->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
    qDebug()<<"up"<<endl;
}

void Widget::on_pushButton_left_clicked()
{
    QRect rect = ui->pushButton_dog->geometry();
    ui->pushButton_dog->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
    qDebug()<<"left"<<endl;
}

void Widget::on_pushButton_right_clicked()
{
    QRect rect = ui->pushButton_dog->geometry();
    ui->pushButton_dog->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
    qDebug()<<"right"<<endl;
}

void Widget::on_pushButton_down_clicked()
{
    QRect rect = ui->pushButton_dog->geometry();
    ui->pushButton_dog->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
    qDebug()<<"down"<<endl;
}

在这里插入图片描述

👉🏻QRadioButton

QRadioButton是Qt框架中的一个控件,用于创建单选按钮组,允许用户在一组选项中进行“多选一”的选择。以下是关于QRadioButton的详细介绍:

🍭 一、基本功能与特点

  1. 状态切换:QRadioButton可以切换选中(checked)或未选中(unchecked)状态。在一组单选按钮中,一次只能选中一个按钮。
  2. 自动互斥:默认情况下,属于同一个父部件或按钮组的单选按钮具有自动互斥特性,即同一时间只能选中其中一个按钮。
  3. 信号与槽:每当按钮的选中状态发生变化时,会发出toggled()信号。可以通过连接此信号到相应的槽函数来执行特定操作。
  4. 文本与图标:单选按钮可以显示文本标签和可选的小图标,文本可以通过构造函数或setText()函数设置,图标则通过setIcon()函数设置。
  5. 快捷键:可以通过在文本中的特定字符前指定一个&来设置快捷键,以便用户通过键盘快速选择按钮。

🍭 二、常用操作

  1. 设置选中状态:使用setChecked(bool)函数可以设置按钮的选中状态。当参数为true时,按钮被选中;为false时,按钮未被选中。
  2. 分组管理:如果需要将多个单选按钮分为不同的组,可以使用QButtonGroup类。通过QButtonGroup的addButton()函数可以将单选按钮添加到指定的组中,从而实现多组单选按钮的独立管理。
  3. 禁用与启用:使用setEnabled(bool)函数可以禁用或启用单选按钮。当参数为false时,按钮被禁用,用户无法与之交互;为true时,按钮恢复正常状态。
  4. 设置样式:可以通过setStyleSheet()函数为单选按钮设置自定义样式,包括背景颜色、边框、字体等。此外,还可以使用QSS(Qt样式表)来定义按钮在不同状态下的样式,如鼠标悬停、按下等。

🍭 三、注意事项

  1. 独占性设置:虽然QRadioButton默认具有自动互斥特性,但也可以通过setExclusive(bool)函数来手动设置其独占性。当设置为false时,允许同时选中多个按钮(但这通常不符合单选按钮的使用场景)。
  2. 信号连接:在连接toggled()信号到槽函数时,需要注意确保在ui->setupUi(this)之后进行连接,以避免在初始化阶段出现未定义行为。
  3. 样式定义:在使用setStyleSheet()函数定义样式时,需要遵循QSS的语法规则,并确保样式定义与Qt的渲染机制兼容。

🍭四、常用方法
QRadioButton 继承自 QAbstractButton,因此它拥有很多来自其基类以及自己特有的方法。以下是一些 QRadioButton 常用的方法:

  1. setChecked(bool): 设置单选按钮的选中状态。如果参数为 true,则按钮被选中;如果为 false,则按钮未被选中。

  2. isChecked() const: 返回一个布尔值,指示单选按钮当前是否被选中。

  3. setText(const QString &text): 设置单选按钮上显示的文本。

  4. text() const: 返回单选按钮上当前显示的文本。

  5. setIcon(const QIcon &icon): 设置单选按钮旁边的图标。

  6. icon() const: 返回单选按钮旁边的图标。

  7. setIconSize(const QSize &size): 设置单选按钮旁边图标的大小。

  8. iconSize() const: 返回单选按钮旁边图标的大小。

  9. setEnabled(bool enabled): 启用或禁用单选按钮。如果参数为 true,则按钮可用;如果为 false,则按钮被禁用,用户无法与之交互。

  10. isEnabled() const: 返回一个布尔值,指示单选按钮当前是否可用。

  11. setVisible(bool visible): 设置单选按钮的可见性。如果参数为 true,则按钮可见;如果为 false,则按钮隐藏。

  12. isVisible() const: 返回一个布尔值,指示单选按钮当前是否可见。

  13. toggle(): 切换单选按钮的选中状态。如果按钮当前被选中,则变为未选中;如果未选中,则变为选中。

  14. clicked() 信号: 当用户点击单选按钮时发射此信号。注意,这与 toggled() 信号不同,toggled() 信号是在按钮的选中状态改变时发射的,而 clicked() 信号仅在用户点击时发射,无论选中状态是否改变。

  15. toggled(bool checked) 信号: 当单选按钮的选中状态改变时发射此信号,并带有新的选中状态作为参数。

  16. setAutoExclusive(bool autoExclusive): 设置单选按钮是否自动互斥。但请注意,这个方法并不是 QRadioButton 的一部分,而是 QAbstractButton 的一个受保护的方法。在大多数情况下,你不需要直接调用它,因为 QRadioButton 默认就是自动互斥的。

  17. addToGroup(QButtonGroup *group, QObject *receiver = nullptr): 将单选按钮添加到按钮组中。但是,请注意这个方法并不是 QRadioButton 的一部分。实际上,你应该使用 QButtonGroupaddButton() 方法来将单选按钮添加到组中。

在使用 QRadioButton 时,你通常会与 QButtonGroup 一起使用,以便管理一组单选按钮,确保它们之间的互斥性。但是,QRadioButton 本身也支持自动互斥,只要它们属于同一个父控件或具有相同的父控件链。

请注意,我提到的某些方法(如 setAutoExclusive())可能是受保护的或不是 QRadioButton 的直接方法,这里主要是为了提供完整的上下文和可能的混淆点说明。在实际开发中,你应该查阅 Qt 的官方文档来获取最准确和最新的信息。

👉🏻 QCheckBox

QCheckBox 是 Qt 框架中用于显示可切换的复选框(check box)的控件。它是一个让用户从一组选项中选择一个或多个选项的便捷方式。QCheckBox 继承自 QAbstractButton 类,因此它拥有按钮的一些基本属性,比如可以被点击、具有按下(pressed)、释放(released)、点击(clicked)等状态变化,但它更专注于提供一个可视化的复选框界面。

主要特点

  1. 状态QCheckBox 有两种主要状态——选中(checked)和未选中(unchecked)。此外,有些情况下还可以设置第三种状态,即部分选中(partially checked)或不确定(indeterminate)状态,这通常用于表示一个选项的子选项中有部分被选中,但并非全部。

  2. 文本:每个 QCheckBox 都可以关联一段文本,这段文本会显示在复选框旁边,用于描述复选框的选项内容。

  3. 信号与槽QCheckBox 提供了多种信号,如 stateChanged(int)toggled(bool) 等,允许开发者在复选框的状态变化时执行特定的操作。通过连接这些信号到槽函数,可以实现复杂的用户交互逻辑。

  4. 样式与外观:Qt 允许开发者通过样式表(QSS)或编程方式自定义 QCheckBox 的外观,包括颜色、字体、边框等,以满足不同应用程序的需求。

使用示例

以下是一个简单的使用 QCheckBox 的例子,展示了如何创建一个复选框,并将其状态变化连接到槽函数上:

#include <QApplication>
#include <QCheckBox>
#include <QDebug>

class MyWidget : public QWidget
{
    Q_OBJECT
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        QCheckBox *checkBox = new QCheckBox("同意条款", this);
        checkBox->move(50, 50); // 移动复选框到指定位置

        // 连接信号到槽
        connect(checkBox, &QCheckBox::stateChanged, this, [this, checkBox](int state){
            if (state == Qt::Checked) {
                qDebug() << "用户已同意条款";
            } else {
                qDebug() << "用户未同意条款";
            }
        });
    }
};

#include "main.moc"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MyWidget widget;
    widget.show();

    return app.exec();
}

在这个例子中,我们创建了一个名为 MyWidget 的窗口类,并在其构造函数中创建了一个 QCheckBox 对象。我们将复选框的 stateChanged 信号连接到了一个 lambda 表达式上,当复选框的状态变化时,会在控制台输出相应的信息。注意,这里使用了 C++11 的 lambda 表达式来简化槽函数的编写。

👉🏻QLabel

Label控件,在Qt框架中通常指的是QLabel控件,它是一个用于显示文本或图像的控件类。以下是对QLabel控件的详细介绍:

🍪一、功能概述

QLabel控件主要用于在Qt应用程序中显示文本或图像。它可以显示静态文本,也可以显示包含格式和超链接的富文本。此外,QLabel还可以用来显示动画或数字,尽管这些功能可能不是其主要用途。

🍪 二、文本显示

  • 纯文本与富文本QLabel支持显示纯文本和富文本。富文本允许你设置文本的字体、颜色、大小以及插入图片等。通过setTextFormat(Qt::TextFormat)函数可以设置文本的格式,其中Qt::PlainText表示纯文本,Qt::RichText表示富文本。
  • 文本对齐:可以通过setAlignment(Qt::Alignment)函数设置文本的对齐方式,如左对齐、右对齐、居中对齐等。Qt::Alignment是一个枚举类型,支持多种对齐方式的组合。
  • 自动换行:如果文本内容过长,超过了QLabel的宽度,可以通过设置setWordWrap(true)来启用自动换行功能。
  • 文本缩进:通过setIndent(int)函数可以设置文本的缩进量,单位是像素。缩进量可以影响文本的首行或每一行,具体取决于对齐方式和缩进设置。

🍪 三、图像显示

  • 设置图片QLabel可以通过setPixmap(const QPixmap&)函数显示图片。QPixmap对象代表了一个图像,可以通过加载文件或图像资源来创建。
  • 缩放内容QLabelscaledContents属性控制是否自动缩放图像或文本以适应控件的大小。当scaledContents设置为true时,图像或文本会被缩放以填充整个QLabel控件的区域。

🍪四、其他功能

  • 设置边距:通过setMargin(int)函数可以设置QLabel内部内容与边框之间的空白区域的大小,即边距。
  • 焦点助记符QLabel可以作为另一个控件的焦点助记符,即设置快捷键。当使用setBuddy(QWidget *)函数将QLabel与另一个控件关联后,用户可以通过快捷键将焦点切换到该控件上。
  • 链接支持:如果QLabel显示富文本并包含链接,可以通过设置openExternalLinks属性来控制点击链接时的行为。当openExternalLinkstrue时,点击链接将自动打开对应的网页或资源。

🍪 五、使用场景

QLabel控件在Qt应用程序中非常常见,常用于显示应用程序的标题、标签、状态栏内容、帮助文本等。由于其简单易用且功能丰富,QLabel成为了Qt开发者在构建用户界面时不可或缺的一个控件。

🍪六、总结

QLabel控件是Qt框架中用于显示文本或图像的控件类,它支持多种文本格式和图像显示方式,并提供了一系列用于调整文本和图像显示效果的属性和方法。通过合理使用QLabel控件,可以创建出美观、实用的用户界面。

常用方法

🍙 文本相关方法

  1. setText(str text):

    • 设置 QLabel 显示的文本内容。
    • 参数 text 是要显示的字符串。
  2. setTextFormat(Qt.TextFormat format):

    • 设置文本的显示格式。
    • 参数 format 可以是 Qt.PlainText(纯文本)或 Qt.RichText(富文本,支持HTML子集)。
  3. setAlignment(Qt.Alignment alignment):

    • 设置文本或图像的对齐方式。
    • 参数 alignment 可以是多种对齐标志的组合,如 Qt.AlignCenter(居中对齐)、Qt.AlignRight(右对齐)等。
  4. setFont(QFont font):

    • 设置文本的字体。
    • 参数 font 是一个 QFont 对象,可以指定字体大小、样式、加粗等属性。
  5. setStyleSheet(str styleSheet):

    • 设置 QLabel 的样式表,用于控制文本的样式、颜色、背景等。
    • 参数 styleSheet 是一个包含CSS样式规则的字符串。

🍙 图像相关方法

  1. setPixmap(QPixmap pixmap):

    • 设置 QLabel 显示的图像。
    • 参数 pixmap 是一个 QPixmap 对象,表示要显示的图像。
  2. setScaledContents(bool enabled):

    • 设置是否自动缩放图像以适应 QLabel 的大小。
    • 参数 enabledTrue 时启用自动缩放,为 False 时禁用。

🍙 交互相关方法

  1. setOpenExternalLinks(bool open):

    • 设置是否允许 QLabel 中的富文本链接在新浏览器中打开。
    • 参数 openTrue 时允许打开链接,为 False 时不允许。
  2. setBuddy(QWidget *buddy):

    • 设置 QLabel 的伙伴控件。当 QLabel 带有助记符(如 & 前缀的字符)时,按下该助记符的快捷键会将焦点转移到伙伴控件上。
    • 参数 buddy 是伙伴控件的指针。

🍙 其他常用方法

  1. clear():

    • 清除 QLabel 的文本和图像内容。
  2. text():

    • 获取 QLabel 当前显示的文本内容。
  3. sizeHint():

    • 返回 QLabel 的建议大小,基于其内容(文本或图像)和当前样式。
  4. setMargin(int margin):

    • 设置文本或图像内容与边框之间的空白区域大小(边距)。

👉🏻QLCDNumer

QLCDNumber是Qt框架中用于显示数字或计数值的一个控件。它模拟了液晶数字显示屏的外观,可以在Qt应用程序中用于展示各种数字信息,如时钟、计时器、计数器等。以下是对QLCDNumber的详细介绍:

🧃 一、基本功能

  • 显示数字:QLCDNumber可以显示整数、浮点数以及十六进制数等。
  • 设置显示位数:可以设置控件的宽度,即显示的数字位数。
  • 设置数字格式:支持十进制、十六进制等多种数字格式。
  • 自动调整大小:支持自动调整显示的数字大小,以适应控件的大小。
  • 前缀和后缀文本:可以设置显示的前缀和后缀文本,以提供更多上下文信息。

🧃二、样式与外观

  • 样式分类:QLCDNumber支持多种样式,如Filled(填充样式)、Outline(轮廓样式)和Flat(平面样式)。这些样式可以控制数字的外观,如是否填充颜色、是否具有阴影效果等。
  • 样式表(StyleSheet):可以使用Qt的样式表功能来进一步自定义QLCDNumber的外观,包括边框、背景颜色、字体颜色等。

🧃 三、常用属性与方法

  • digitCount:设置QLCDNumber能显示的位数。
  • mode:设置数字的显示模式,如十进制(Dec)、十六进制(Hex)等。
  • segmentStyle:设置数字的显示风格,如Flat、Outline、Filled等。
  • display():用于显示数字或字符串。可以接收多种类型的数据,如整数、浮点数、字符串等,并自动转换为适当的格式进行显示。
  • value():获取QLCDNumber当前显示的数值(作为double类型返回)。

🧃 四、应用场景

QLCDNumber因其直观、易用的特点,在Qt应用程序中有着广泛的应用。例如,在计时器、时钟、计数器、游戏分数显示等场景中,QLCDNumber都能提供清晰、准确的数字显示。

五、示例代码

以下是一个简单的示例,展示了如何使用QLCDNumber来实现一个倒计时功能:

#include <QApplication>
#include <QWidget>
#include <QLCDNumber>
#include <QTimer>

class Widget : public QWidget {
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr) : QWidget(parent) {
        QLCDNumber *lcdNumber = new QLCDNumber(this);
        lcdNumber->display("10"); // 设置初始值

        QTimer *timer = new QTimer(this);
        connect(timer, &QTimer::timeout, this, [lcdNumber]() {
            int value = lcdNumber->intValue();
            if (value <= 0) {
                timer->stop();
                return;
            }
            lcdNumber->display(value - 1);
        });

        timer->start(1000); // 每秒触发一次timeout信号
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    Widget widget;
    widget.show();
    return app.exec();
}

在这个示例中,我们创建了一个QLCDNumber对象用于显示倒计时,并设置其初始值为10。然后,我们创建了一个QTimer对象,并将其timeout信号连接到一个lambda函数中,该函数负责更新QLCDNumber的显示值,并在倒计时结束时停止定时器。最后,我们启动定时器,使其每秒触发一次timeout信号,从而实现倒计时功能。

👉🏻QProgressBar

QProgressBar是Qt框架中提供的一个控件,用于在界面上显示任务的进度。它通常用于向用户展示一个操作完成的百分比,比如文件下载、数据处理等操作的进度。以下是关于QProgressBar的详细介绍:

🍱 一、基本功能与特点

  1. 显示进度:QProgressBar通过改变其长度(水平方向)或高度(垂直方向)来指示任务的进度。
  2. 自定义范围:可以通过设置最小值和最大值来指定进度条的范围,从而适应不同的任务需求。
  3. 文本显示:进度条可以显示文本,如当前值、百分比或自定义文本,以提供更直观的进度信息。
  4. 样式与外观:支持样式表(StyleSheet),允许通过CSS来定制进度条的外观,如颜色、背景等。
  5. 信号与槽:提供了valueChanged等信号,可以与其他控件或功能集成,实现进度更新时的交互。

🍱 二、常用属性与方法

  1. 设置范围与值

    • setMinimum(int min):设置进度条的最小值。
    • setMaximum(int max):设置进度条的最大值。
    • setValue(int value):设置进度条的当前值。
  2. 文本显示

    • setTextVisible(bool visible):控制是否显示文本。
    • setFormat(const QString &format):设置文本的显示格式,可以使用%p(百分比)、%v(当前值)、%m(最大值)等占位符。
  3. 样式设置

    • setStyleSheet(const QString &styleSheet):通过样式表设置进度条的外观。
  4. 其他

    • setRange(int min, int max):同时设置最小值和最大值。
    • reset():将进度条重置为最小值。

🍱 三、使用示例

以下是一个简单的使用示例,展示了如何在Qt应用程序中创建和使用QProgressBar:

#include <QApplication>
#include <QWidget>
#include <QProgressBar>
#include <QTimer>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.resize(200, 100);

    QProgressBar *progressBar = new QProgressBar(&window);
    progressBar->setGeometry(10, 10, 180, 30); // 设置位置和大小
    progressBar->setMinimum(0); // 设置最小值
    progressBar->setMaximum(100); // 设置最大值
    progressBar->setValue(0); // 初始值设为0

    QTimer *timer = new QTimer(&window);
    QObject::connect(timer, &QTimer::timeout, [&progressBar]() {
        int value = progressBar->value();
        if (value < 100) {
            progressBar->setValue(value + 1); // 更新进度条的值
        } else {
            timer->stop(); // 达到100%时停止定时器
        }
    });

    timer->start(100); // 每100毫秒更新一次进度

    window.show();
    return app.exec();
}

在这个示例中,我们创建了一个QProgressBar对象,并将其添加到QWidget窗口中。然后,我们使用QTimer定时器来模拟进度条的更新过程,每隔100毫秒就将进度条的值增加1,直到达到100%。

🍱 四、总结

QProgressBar是Qt框架中一个非常实用的控件,通过它可以在界面中直观地展示任务的进度。通过设置不同的属性和方法,可以轻松地实现进度条的自定义和集成。

👉🏻QCalendarWidget

QCalendarWidget是Qt框架中提供的一个控件,主要用于显示和选择日期。以下是对QCalendarWidget的详细介绍:

🍔 一、基本功能

  • 显示日历:QCalendarWidget可以显示一个完整的月份日历,包括日期、星期等信息。
  • 选择日期:用户可以通过点击日历上的日期来选择特定的日期。
  • 日期导航:提供月份和年份的导航按钮,方便用户快速跳转到所需的日期。

🍔 二、常用属性

  • selectedDate:获取当前选中的日期。
  • minimumDatemaximumDate:设置用户可选择的最小和最大日期范围,以限制用户的选择。
  • gridVisible:设置是否显示日历中每一天的网格,以便美化界面。

🍔 三、重要信号

  • selectionChanged(const QDate &date):当用户选择的日期发生变化时,会发出此信号。可以通过连接此信号到相应的槽函数,来实现日期选择后的处理逻辑。

🍔 四、应用场景

QCalendarWidget适用于多种应用场景,如日期选择器、日历应用程序等。它提供了灵活的界面和丰富的功能,使得用户可以方便地浏览和选择日期。

🍔 五、使用示例

以下是一个简单的使用QCalendarWidget的示例,展示了如何创建一个日历控件,并连接selectionChanged信号到槽函数,以在标签中显示选中的日期:

#include <QApplication>
#include <QWidget>
#include <QCalendarWidget>
#include <QLabel>
#include <QVBoxLayout>
#include <QDebug>

class MyWidget : public QWidget {
    Q_OBJECT

public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
        QVBoxLayout *layout = new QVBoxLayout(this);

        m_calendar = new QCalendarWidget(this);
        m_label = new QLabel(this);

        layout->addWidget(m_calendar);
        layout->addWidget(m_label);

        connect(m_calendar, &QCalendarWidget::selectionChanged, this, &MyWidget::onSelectionChanged);

        // 设置默认选中的日期(可选)
        // m_calendar->setSelectedDate(QDate::currentDate());
    }

private slots:
    void onSelectionChanged(const QDate &date) {
        m_label->setText(date.toString("yyyy-MM-dd"));
        qDebug() << "Selected date:" << date.toString();
    }

private:
    QCalendarWidget *m_calendar;
    QLabel *m_label;
};

#include "main.moc"

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    MyWidget widget;
    widget.show();

    return app.exec();
}

🍔 六、注意事项

  • 在使用QCalendarWidget时,需要注意其界面定制性相对较差,如果需要更改样式,可能需要通过重写样式表(QSS)来实现。
  • 默认情况下,QCalendarWidget会显示当前日期,但可以通过设置setSelectedDate()方法来改变默认选中的日期。
  • 通过设置minimumDate和maximumDate属性,可以限制用户的选择范围,提高应用程序的可用性。

综上所述,QCalendarWidget是Qt框架中一个非常实用的日期选择控件,具有灵活的界面和丰富的功能,能够满足多种应用场景的需求。

👉🏻QLineEdit

QLineEdit是Qt框架中用于接收和显示单行文本输入的小控件。它作为用户界面中常见的文本框控件,允许用户输入、编辑和显示文本内容。以下是关于QLineEdit的详细介绍:

🌯 一、基本功能

  • 文本输入与显示:用户可以在QLineEdit中输入和编辑单行文本。
  • 编辑功能:支持基本的文本编辑操作,如撤销、恢复、剪切、粘贴以及拖放等。
  • 输入限制:可以通过设置输入掩码(inputMask)或验证器(validator)来限制用户输入的内容,如只能输入数字、特定格式的日期等。

🌯 二、常用属性

  • echoMode:设置文本的显示方式,如正常显示、密码模式(输入内容以点显示)、不回显模式(不显示任何输入内容)等。
  • maxLength:设置文本的最大长度,超出长度的输入将被截断。
  • placeholderText:设置占位符文本,当输入框为空时显示,用于提示用户输入内容。
  • readOnly:设置输入框是否为只读,只读模式下用户不能修改文本内容。
  • inputMask:设置输入掩码,用于定义和限制用户输入的格式。
  • validator:设置验证器,用于更复杂的输入验证。
  • alignment:设置文本的对齐方式,如左对齐、居中对齐、右对齐等。

🌯三、重要信号

  • textChanged(const QString &):当文本内容发生变化时发出此信号。注意,如果是通过代码设置文本导致的变化,则不会触发此信号。
  • textEdited(const QString &):当文本内容被用户编辑时发出此信号,即用户通过输入或粘贴等操作改变文本内容时触发。
  • cursorPositionChanged(int old, int new):当光标位置发生变化时发出此信号,参数分别为变化前后的光标位置。
  • editingFinished():当编辑完成时发出此信号,通常是在用户按下回车键或QLineEdit失去焦点时触发。

🌯 四、使用示例

假设需要创建一个用户登录界面,包含账号、密码和手机号输入框,可以使用QLineEdit来实现。以下是一个简化的示例代码片段:

// 初始化账号输入框
ui->lineEdit_name->setPlaceholderText("请输入账号");
ui->lineEdit_name->setClearButtonEnabled(true); // 设置清除按钮

// 初始化密码输入框
ui->lineEdit_password->setPlaceholderText("请输入密码");
ui->lineEdit_password->setEchoMode(QLineEdit::Password); // 设置为密码模式
ui->lineEdit_password->setClearButtonEnabled(true);

// 初始化手机号输入框
ui->lineEdit_phone->setPlaceholderText("请输入手机号");
ui->lineEdit_phone->setClearButtonEnabled(true);
ui->lineEdit_phone->setInputMask("000-0000-0000"); // 设置输入掩码,限制输入格式

🌯 五、注意事项

  • 在设置QLineEdit的validator或inputMask时,如果需要转换validator或inputMask的类型,建议先清除原有的validator或inputMask,以避免出现未定义的行为。
  • QLineEdit提供了丰富的编辑功能和输入限制选项,但需要注意合理使用,避免过度限制用户输入,影响用户体验。

综上所述,QLineEdit是Qt框架中一个功能强大且灵活的单行文本输入控件,通过合理设置其属性和连接信号与槽函数,可以方便地实现各种文本输入需求。

👉🏻QTextEdit

QTextEdit是Qt框架中一个功能丰富的文本编辑控件,它用于编辑和显示纯文本和富文本。以下是关于QTextEdit的详细介绍:

🥦 一、基本功能与特点

  • 富文本编辑与显示:QTextEdit支持富文本格式,可以显示和编辑带有各种字体、颜色、大小、对齐方式等格式的文本。它支持HTML4标签的子集和Markdown格式的富文本格式化,使得文本内容的展示更加丰富多样。
  • 处理大型文档:QTextEdit经过优化,可以处理大型文档并快速响应用户输入,适用于编辑长篇文章或大量文本。
  • 显示图像、列表和表格:除了文本内容,QTextEdit还可以显示图像、列表和表格,进一步丰富了文本编辑的内容。
  • 提供占位文本提示:当编辑框内无内容时,QTextEdit可以显示预设的占位文本提示信息,帮助用户了解输入要求。

🥦二、常见属性与功能

  • acceptRichText:表示是否接收富文本的插入,默认为true。如果设置为false,则只能接收纯文本的输入。
  • autoFormatting:自动格式化的策略,默认为AutoNone,即不做任何自动格式化。还可以设置为AutoBulletList(自动创建项目列表)或AutoAll(应用所有自动格式化,但目前只有AutoBulletList有效)。
  • document:表示文本编辑器的文档结构,使用QTextDocument封装。
  • lineWrapColumnOrWidth:文本换行的位置,配合文本换行策略使用。
  • lineWrapMode:文本换行策略,如WidgetWidth(文字被包装在文本编辑的右边缘,换行发生在空白处,保持整个单词完整)等。
  • placeholderText:当文档内容为空时显示的占位符文本。
  • textInteractionFlags:指定QTextEdit控件如何与用户输入交互,如是否允许通过鼠标或键盘选择文本、是否允许编辑等。

🥦 三、重要信号

  • textChanged(const QString &):当文本内容发生变化时发出此信号。
  • selectionChanged():当选择的文本发生变化时发出此信号。
  • cursorPositionChanged():当光标位置发生变化时发出此信号。
  • undoAvailable(bool):当撤销操作可用时发出此信号。
  • redoAvailable(bool):当重做操作可用时发出此信号。

🥦 四、使用示例

以下是一个简单的使用示例,展示了如何创建一个QTextEdit控件并设置其基本属性:

#include <QTextEdit>

// 创建QTextEdit控件
QTextEdit *textEdit = new QTextEdit(this);
textEdit->setGeometry(30, 30, 380, 128); // 设置控件位置和大小
textEdit->setPlainText("这是一段 QTextEdit 示例文本。"); // 设置纯文本内容
textEdit->setPlaceholderText("请输入备注说明。"); // 设置占位符文本
textEdit->setReadOnly(false); // 设置是否只读

// 连接信号与槽函数(此处省略槽函数的实现)
connect(textEdit, &QTextEdit::textChanged, this, &MyClass::onTextChanged);

🥦 五、注意事项

  • 在使用QTextEdit时,需要注意其性能优化和内存管理,特别是在处理大型文档时。
  • 由于QTextEdit支持富文本格式,因此在设置文本内容时需要注意HTML或Markdown标签的正确性,以避免格式错乱或安全问题。
  • QTextEdit的某些功能可能受到平台或Qt版本的影响,具体使用时需要参考官方文档或相关资源。

如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值