Bootstrap

Qt:10.显示类控件(QLabel-显示文本或图像的控件、QLCDNumber -显示数字的特殊控件、QProgressBar-进度条、QCalendarWidget-日历)

目录

一、QLabel-显示文本或图像的控件:

1.1QLabel介绍:

1.2设置文本格式——textFormat属性:

1.3设置图片——pixmap属性:

1.4自动缩放——scaledContents属性:

拓展:resizeEvent方法:

1.5内容对齐方式——alignment属性:

1.6 自动换行——wordWrap属性:

1.7 文本缩进——indent 属性:

1.8 设置控件边距或留白区域——margin属性:

二、QLCDNumber -显示数字的特殊控件:

2.1QLCDNumber介绍:

2.2实例——倒计时小程序:

三、QProgressBar-进度条:

3.1QProgressBar介绍:

3.2属性介绍:

3.3实例——简单的进度条:

四、QCalendarWidget-日历:

4.1QCalendarWidget介绍:

4.2属性介绍:

4.3信号介绍:


一、QLabel-显示文本或图像的控件:

1.1QLabel介绍:

  • QLabel 是 Qt 框架中的一个控件类,用于显示文本或图像。
  • 他继承自QWidget,所以可以使用QWidget的方法。
  • 基础属性有:

        

1.2设置文本格式——textFormat属性:

  • textFormat 属性用于设置标签中显示文本的格式。他是一个枚举类型。
  • 默认的格式为AutoText
Qt::AutoText自动检测文本格式。
Qt::PlainText将文本视为纯文本。
Qt::RichText将文本视为富文本(HTML 格式)。
Qt::MarkDownText将文本视为makedown格式。
  • 获取label控件的文本格式:
Qt::TextFormat format=label->textFormat();
  • 设置label控件的文本格式:
label->setTextFormat(Qt::AutoText/PlainText/RichText/MarkDownText);

1.3设置图片——pixmap属性:

  • pixmap 属性用于显示图像。使用 pixmap 属性将一个 QPixmap 对象设置为label的内容,从而在label中显示图像。
  • 建议使用QRC机制管理的图片,来设置为label的内容。
label->setPixmap(QPixmap(": + 后缀 + 相对路径"));

1.4自动缩放——scaledContents属性:

  • scaledContents 是 QLabel 类中的一个布尔属性,用于控制标签中显示的图像或文本是否自动缩放以适应标签的大小。

  • scaledContents 设置为 true 时,QLabel 会自动调整显示的内容(图像或文本)的大小,使其完全适应标签的大小。

  • 默认情况下,scaledContents 的值为 false,这意味着标签中的内容将以其原始尺寸显示。

ui->label->setScaledContents(true);

拓展:resizeEvent方法:

  • resizeEvent 是 QWidget 类中的一个虚方法。使用要包含头文件<QResizeEvent>。
  • 当窗口小部件的大小发生变化时,该方法会被自动调用。通过重写这个方法,可以自定义控件在调整大小时的行为。
void Widget::resizeEvent(QResizeEvent* event)
{
    ui->label->setGeometry(0,0,event->size().width(),event->size().height());
}

//上述代码,设置了一个label控件,可以让该控件的宽和高随着窗口的改变而改变
  • 这个函数被自动调用后,可以通过event->size()来获取控件新的大小。
  • event->size()->width() 和 event->size()->height()可以获取新的宽度和高度。

1.5内容对齐方式——alignment属性:

  • alignment 属性用于设置标签中文本或内容的对齐方式。这个属性接受枚举类型的值,可以控制内容在标签中的水平和垂直对齐。

  • 设置对齐方式:
label->setAlignment(Qt::AlignCenter); 
  • 可以设置的属性有:

        

  • 以下是一个例子:

        

1.6 自动换行——wordWrap属性:

  • wordWrap属性,用于控制标签中的文本是否自动换行。
  • 当文本的长度超过标签的宽度时,如果 wordWrap 属性设置为 true,文本会自动换行显示;如果设置为 false,文本会截断或溢出标签的边界。

  • 设置自动换行:
label->setWordWrap(true); 
  • 获取 wordWrap 属性:
bool isWordWrapEnabled = label->wordWrap();
  • 汉字可以自动换行。
  • 长串的数字或字母有时不会自动换行,这是由于系统会尝试在不破坏单词的前提下进行换行。
  • 文本中的空格和标点符号(如句号、逗号、冒号等)是常见的换行点。当文本遇到这些字符时,系统会优先在这些位置进行换行。

1.7 文本缩进——indent 属性:

  • indent 属性用于控制控件中的文本缩进,缩进的单位是像素。
  • 默认情况下,indent 属性为 -1,表示没有缩进。
  • 这样设置的缩进,并非只有首行缩进,当和自动换行联合使用时,每一行都会被缩进指定像素数量。

  • 设置文本缩进格式:
label2->setIndent(20);  //20像素的缩进

1.8 设置控件边距或留白区域——margin属性:

  • margin用于指定控件的边框与文本内容之间的空白区域的大小。,默认值为0。
  • 需要注意的是,设置留白区域之后,剩余的区域如果不够所有文本的显示,多余的文本会被截断。

  • 设置 margin 属性:
label2->setMargin(20); 

二、QLCDNumber -显示数字的特殊控件:

2.1QLCDNumber介绍:

  • QLCDNumber 控件是 Qt 中用于显示数字的特殊控件。
  • 通常用于显示需要精确控制格式和显示方式的数字。它提供了一种类似数字显示器或LCD屏幕的视觉效果,适合显示整数或浮点数。
smallDecimalPoint控制小数点的显示大小。如果设置为 true,小数点将以较小的尺寸显示。
digitCount设置显示数字的位数。这包括整数位和小数位的总数。
mode控制显示数字的模式,可以是十进制(Dec)、十六进制(Hex)、八进制(Oct)或二进制(Bin)。
segmentStyle设置显示数字的样式。
value获取或设置 QLCDNumber 显示的当前值。可以是浮点数。
intValue获取 QLCDNumber 显示的当前整数值。如果当前显示的是浮点数,将返回其整数部分。

2.2实例——倒计时小程序:

  • 拉一个QLcdNumber组件到ui界面。
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    //设置初始显示的数值
    ui->lcdNumber->display(6);
    //创建一个定时器,并将它挂到对象树上
    timer=new QTimer(this);
    //将定时器和处理函数绑定
    connect(timer,&QTimer::timeout,this,&Widget::handle);
    //设置定时器的启动间隔
    timer->start(1000);
}


void Widget::handle()
{
    //获取当前显示的数值
    int val=ui->lcdNumber->intValue();
    //如果数值不大于0,就停止计时器
    if(val<=0)
    {
        timer->stop();
        return;
    }
    //重新设置显示的数值
    ui->lcdNumber->display(val-1);
}
  • 定时器QTimer使用需要包含头文件<QTimer>

三、QProgressBar-进度条:

3.1QProgressBar介绍:

  • QProgressBar 是 Qt 库中用于显示进度的控件。它可以用来表示任务的进度。
  • 通常以填充条的形式显示,表示从 0 到 100 的百分比。

3.2属性介绍:

minimum
  • 进度条的最小值。
  • setMinimum(int min) 设置最小值
  • minimum() 获取当前最小值。
maximum
  • 进度条的最大值。
  • setMaximum(int max) 设置最大值
  • maximum() 获取当前最大值。
value
  • 进度条的当前值。
  • setValue(int value) 设置当前值
  • value() 获取当前值。
alignment
  • 进度条文本的对齐方式。
  • setAlignment(Qt::Alignment alignment) 设置对齐方式
  • alignment() 获取当前对齐方式。
  • 常见对齐方式有 Qt::AlignLeft、Qt::AlignRight 和 Qt::AlignCenter。
textVisible
  • 进度条上是否显示文本。
  • setTextVisible(bool visible) 设置文本显示状态.
  • isTextVisible() 获取当前文本显示状态。
orientation
  • 进度条的方向(水平或垂直)。
  • setOrientation(Qt::Orientation orientation) 设置方向。
  • orientation() 获取当前方向。常用方向有 Qt::Horizontal 和 Qt::Vertical。
invertedAppearance
  • 进度条的外观是否反转。如果为 true,则进度条从右到左或从下到上填充。
  • setInvertedAppearance(bool invert) 设置外观是否反转。
  • invertedAppearance() 获取当前外观是否反转。
textDirection
  • 进度条文本的方向(从左到右或从右到左)。
  • setTextDirection(QProgressBar::Direction textDirection) 设置文本方向。
  • textDirection() 获取当前文本方向。常用方向有 QProgressBar::TopToBottom 和 QProgressBar::BottomToTop。
format
  • 进度条上显示的文本格式。可以使用 %p 代表百分比。
  • setFormat(const QString &format) 设置文本格式。
  • format() 获取当前文本格式。

3.3实例——简单的进度条:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建定时器
    timer=new QTimer(this);
    //连接到槽函数
    connect(timer,&QTimer::timeout,this,&Widget::handle);
    //设置启动间隔
    timer->start(100);
}

void Widget::handle()
{
    //获取当前进度条数值
    int val=ui->progressBar->value();
    //大于等于100,停止定时器
    if(val>=100)
    {
        timer->stop();
        return;
    }
    //更新进度条
    ui->progressBar->setValue(val+2);
}

四、QCalendarWidget-日历:

4.1QCalendarWidget介绍:

  • QCalendarWidget 是 Qt 库中的一个日期选择控件。
  • 允许用户在一个日历界面中选择日期。

4.2属性介绍:

selectedDate
  • 当前选中的日期。
  • setSelectedDate(const QDate &date) 设置选中的日期
  • selectedDate() 获取当前选中的日期。
minimumDate
  • 日历控件允许选择的最小日期。
  • setMinimumDate(const QDate &date) 设置最小日期
  • minimumDate() 获取最小日期。
maximumDate
  • 日历控件允许选择的最大日期。
  • setMaximumDate(const QDate &date) 设置最大日期
  • maximumDate() 获取最大日期。
firstDayOfWeek
  • 一周的第一天
  • setFirstDayOfWeek(Qt::DayOfWeek day) 设置一周的第一天
  • firstDayOfWeek() 获取当前一周的第一天。
gridVisible
  • 是否显示网格线。
  • setGridVisible(bool show) 设置网格线显示状态
  • isGridVisible() 获取网格线显示状态。
selectionMode
  • 日历控件的选择模式。
  • setSelectionMode(QCalendarWidget::SelectionMode mode) 设置选择模式.
  • selectionMode() 获取当前选择模式。选择模式可以是 QCalendarWidget::NoSelection QCalendarWidget::SingleSelection。
horizontalHeaderFormat
  • 水平标题的显示格式
  • setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) 设置水平标题格式。
  • horizontalHeaderFormat() 获取当前水平标题格式。格式可以是 QCalendarWidget::NoHorizontalHeader、QCalendarWidget::SingleLetterDayNames 或 QCalendarWidget::ShortDayNames。
verticalHeaderFormat
  • 垂直标题的显示格式
  • setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format) 设置垂直标题格式。
  • verticalHeaderFormat() 获取当前垂直标题格式。格式可以是 QCalendarWidget::NoVerticalHeader 或 QCalendarWidget::ISOWeekNumbers。
navigationBarVisible
  • 是否显示导航栏。
  • setNavigationBarVisible(bool visible) 设置导航栏显示状态。
  • isNavigationBarVisible() 获取导航栏显示状态。
dateEditEnabled
  • 是否启用日期编辑。
  • setDateEditEnabled(bool enable) 设置日期编辑状态。
  • isDateEditEnabled() 获取日期编辑状态。
dateEditAcceptDelay
  • 日期编辑接受的延迟时间
  • setDateEditAcceptDelay(int delay) 设置日期编辑接受的延迟时间
  • dateEditAcceptDelay() 获取当前延迟时间。

4.3信号介绍:

selectionChanged()当用户更改日历中的选定日期时发射此信号。
activated(const QDate &date)当用户双击某个日期或按下 Enter 键时发射此信号。
clicked(const QDate &date)当用户单击某个日期时发射此信号。
currentPageChanged(int year, int month)当用户通过导航栏更改当前显示的月份时发射此信号。
selectionChanged()当用户选择的日期发生变化时发射此信号。
;