37 输入组件(Input Widgets)
qt Creator有15种Input Widgets,如图3-62所示。 图3-62 Input Widgets控件
Input Widgets的qt类和名称介绍如表3-18所示。 表3-18 Input Widgets介绍

本节主要介绍Qt Creator的Input Widgets的使用方法。Qt具有多种Input类型控件,分别有ComboBox、LineEdit、TextEdit等显示控件。Qt Creator比Qt Designer新增添了很多输入控件,使开发人员更加方便设计界面。 下面就来具体介绍各种Input Widgets的用法。
371 ComboBox控件
1控件位置 Input Widgets→ComboBox 2控件介绍 ComboBox控件(组合框)的样式如图3-63所示。Qt Creator的ComboBox和Qt Designer的ComboBox样式有些不同。

图3-63 ComboBox控件
3控件设置选项 在ComboBox控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置显示的字体; editable:用来获取或设置一个值,以确定ComboBox的编辑框是否可编辑。值为true时为可编辑,值为false时为只读; currentIndex:当前选项的索引; maxVisibleItems:ComboBox可见的最大项目数; maxCount:ComboBox的最大项目数。 4常用成员函数
1 1) QComboBox::QComboBox ( QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的ComboBox。
1 2) QComboBox::QComboBox ( bool rw, QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的ComboBox。如果rw是true,则编辑栏可编辑;否则只能选择ComboBox项目之一。
1 3) void QComboBox::clear () [slot]

删除ComboBox中的所有项目。
1 4) int QComboBox::count () const
返回ComboBox中的项目数。
1 5) int QComboBox::currentItem () const
返回ComboBox中当前项目的索引。
1 6) QString QComboBox::currentText () const
返回组合框的当前项目文本。
1 7) void QComboBox::insertItem ( const QString & t, int index = -1 )
在索引index处,插入一个文本为t的项目。如果index是负数,该项目将被追加到末尾。
1 8) void QComboBox::insertItem ( const QPixmap & pixmap, int index = -1 )
在索引index处,插入一个图标为pixmap的项目。如果index是负数,该项目将被追加到末尾。
1 9) void QComboBox::insertItem ( const QPixmap & pixmap, const QString & text, int index = -1 )
在索引index处,插入一个文本为t和图标为pixmap的项目。如果index是负数,该项目将被追加到末尾。
1 10) QString QComboBox::currentText () const
返回组合框的当前项目文本。
1 11) void QComboBox::removeItem ( int index )
删除索引index处项目。
1 12) void QComboBox::setCurrentItem ( int index ) [virtual]
把索引index处的项目设为当前项目。

372 Font ComboBox控件
1控件位置 Input Widgets→Font ComboBox 2控件介绍 Font ComboBox控件(字体组合框)继承于QComboBox类,样式如图3-64所示。Font ComboBox组合框分两个部分显示:顶部是一个允许输入文本的文本框,下面的列表框则显示列表项。可以认为Font ComboBox就是文本框与列表框的组合。与列表框相比,组合框不能选择多项,只能选择其中的一项,专门用于字体选择。 图3-64 Font ComboBox控件
3控件设置选项 在Font ComboBox控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置显示的字体;

editable:用来获取或设置一个值,以确定ComboBox的编辑框是否可编辑。值为true时为可编辑,值为false时为只读; currentIndex:当前选项的索引; currentFont:当前字体; maxVisibleItems:ComboBox可见的最大项目数; maxCount:ComboBox的最大项目数。 4常用成员函数
1 QFontComboBox::QFontComboBox ( QWidget *parent = 0 )
构造一个父对象为parent的Font ComboBox。
373 LineEdit控件
1控件位置 Input Widgets→LineEdit 2控件介绍 LineEdit控件(行编辑)是一种常用且比较容易掌握的控件。应用程序主要使用它来接收输入文字信息,样式如图3-65所示。

图3-65 LineEdit控件
3控件设置选项 在LineEdit控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; text:该控件对应图形界面中显示的名称; font:设置text的字体; ReadOnly:用来获取或设置一个值,该值指示文本框中的文本是否为只读,值为true时为只读,值为false时为可读写。 4常用成员函数
1 1) QLineEdit::QLineEdit ( QWidget *parent, const char *name = 0 )
构造一个名称为name、父对象为parent的LineEdit。
1 2) QLineEdit::QLineEdit ( const QString & contents, QWidget *parent, const char *name = 0 )
构造一个名称为name、父对象为parent和内容为contents的LineEdit。
1 3) void QLineEdit::clear () [virtual slot]
清除行编辑的内容。
1 4) bool QLineEdit::isReadOnly () const
如果行编辑是只读则返回true,否则返回false。

1 5) void QLineEdit::setReadOnly ( bool )[virtual slot]
设置行编辑的读写属性。
1 6) void QLineEdit::setText ( const QString & ) [virtual slot]
设置行编辑的文本。
1 7) QString QLineEdit::text () const
返回行编辑的文本。
374 TextEdit控件
1控件位置 Input Widgets→TextEdit 2控件介绍 TextEdit控件(文本编辑)的样式如图3-66所示。应用程序主要使用它输入文本信息或显示文本信息。TextEdit的属性和成员函数与LineEdit基本相同,在此不做介绍。

图3-66 TextEdit控件
375 PlainTextEdit控件
1控件位置 Input Widgets→PlainTextEdit 2控件介绍 PlainTextEdit控件中文称作“文本编辑”。PlainTextEdit控件和TextEdit控件只是样式有些不同,可以通过设置属性来改变样式。 3常用成员函数 构造函数:
1 1) QPlainTextEdit::QPlainTextEdit ( QWidget *parent = 0 )
2 2) QPlainTextEdit::QPlainTextEdit ( const QString & text, QWidget *parent = 0 )
例如:
1 QPlainTextEdit *plaintextedit = new QPlainTextEdit("Hello World!",this);

376 示例15:ComboBox、LineEdit和TextEdit的应用(1)
ComboBox、LineEdit和TextEdit都是常用控件,并且Font ComboBox和ComboBox用法相似,PlainTextEdit和TextEdit用法相似,所以Font ComboBox和PlainTextEdit的示例就不再单独列举,这里用一个综合示例来介绍这几个控件的详细用法。 首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除,界面设计结果如图3-67所示。 1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-19所示。 图3-67 示例15界面
表3-19 主要控件说明

控件类型控件名称控件说明QLineEditleX四则运算的第一个参数QComboBoxcbxRule四则运算的规则QLineEditleY四则运算的第二个参数QPushButtonbtnEqual计算结果QTextEdittextEditResult显示计算结果 2示例说明 本示例实现的是简单的四则运算; 在两个输入框中输入两个参数,选择运算法则,然后单击“=”按钮,运算结果显示在右边的textEdit框中。 3示例实现 头文件mainwindowh(文中的粗体为需要添加的内容):
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 #include
4 namespace Ui {
5 class MainWindow;
6 }
7 class MainWindow : public QMainWindow
8 {

9 Q_OBJECT
10 public:
11 explicit MainWindow(QWidget *parent = 0);
12 ~MainWindow();
13 private:
14 Ui::MainWindow *ui;
15 private slots: //声明槽函数
16 void on_btnEqual_clicked();
17 };
18 #endif // MAINWINDOW_H
在头文件中声明一个槽函数on_btnEqual_clicked(),对应按钮“=”的单击信号。此处的槽函数是通过右击控件→Go to slots自动生成的,所以不用在实现文件中添加映射函数。 在主窗体mainwindowcpp文件中自动生成如下代码:
1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget *parent) :
4 QMainWindow(parent),
5 ui(new Ui::MainWindow)
6 {
7 ui->setupUi(this);
8 }
9 MainWindow::~MainWindow()
10 {
11 delete ui;
12 }
376 示例15:ComboBox、LineEdit和TextEdit的应用(2)
在主窗体mainwindowcpp文件中添加的头文件:

1 #include
在主窗体mainwindowcpp文件中槽函数on_btnEqual_clicked():
1 /槽函数:计算结果/
2 void MainWindow::on_btnEqual_clicked()
3 {
4 if(ui->leX->text()isEmpty())
5 {
6 QMessageBox::warning(NULL, "warning", "Please input X ", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7 }
8 if(ui->leY->text()isEmpty())
9 {
10 QMessageBox::warning(NULL, "warning", "Please input Y ", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
11 }
12 int x,y;
13 str += ui->leX->text()+ui->cbxRule->currentText()+ui->leY->text()+" = ";
14
15 /**************获取x和y*********************************/
16 x=ui->leX->text()toInt();
17 y=ui->leY->text()toInt();
18
19 /**************判断法则**********************************/
20 if(ui->cbxRule->currentText()=="+")
21 str +=QString::number(x+y)+"\n";
22 else if(ui->cbxRule->currentText()=="-")

23 str +=QString::number(x-y)+"\n";
24 else if(ui->cbxRule->currentText()=="")
25 str +=QString::number(x
y)+"\n";
26 else if(ui->cbxRule->currentText()=="/")
27 str +=QString::number(x/y)+"\n";
28
29 /****************显示结果***********************************/
30 ui->textEditResult->setText(str);
31 }
主文件maincpp没有进行任何更改,使用该项目自动生成的即可。 4示例执行结果 示例执行结果如图3-68所示。 图3-68 示例15执行结果

377 SpinBox控件
1控件位置 Input Widgets→SpinBox 2控件介绍 SpinBox控件(整数旋转框)的样式如图3-69所示。SpinBox允许用户通过单击向上/向下按钮来增加/减少当前显示的值,也可以直接输入旋转框的值。如果该值是直接输入旋转框,一般需要按【Enter】键确认新值(有的版本不需要),该值通常是一个整数。 图3-69 SpinBox控件
3控件设置选项 在SpinBox控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置编辑框的字体; value:SpinBox默认值; lineStep:使用箭头来改变旋转框的值的递增/递减量;

minValue:SpinBox的最小值; maxValue:SpinBox的最大值; prefix:SpinBox的前缀字符串; Suffix:SpinBox的后缀字符串。 4常用成员函数
1 1) QSpinBox::QSpinBox ( QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的SpinBox。
1 2) QSpinBox::QSpinBox ( int minValue, int maxValue, int step = 1, QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent、最小值为minValue、最大值为maxValue和增/减量为step的SpinBox。例如:
1 QSpinBox *sb = new QSpinBox(0,99,1,this);
2 3) void QSpinBox::stepDown () [virtual slot]
把旋转框的值减小一个lineStep。等同于单击向下按钮。
1 4) void QSpinBox::stepUp () [virtual slot]
把旋转框的值增加一个lineStep。等同于单击向上按钮。
1 5) QString QSpinBox::text () const
返回旋转框的文本,包括前缀和后缀。
1 6) int QSpinBox::value () const
返回旋转框的值。

1 7) void QSpinBox::setValue ( int value ) [virtual slot]
设置旋转框的值。
1 8) void QSpinBox::setLineStep ( int )
设置旋转框的增/减量。
1 9) void QSpinBox::setMaxValue ( int )
设置旋转框的最大值。
1 10) void QSpinBox::setMinValue ( int )
设置旋转框的最小值。
1 11) void QSpinBox::setPrefix ( const QString & text ) [virtual slot]
设置旋转框的前缀字符串。
1 12) void QSpinBox::setSuffix ( const QString & text ) [virtual slot]
设置旋转框的后缀字符串。
378 Double SpinBox控件
1控件位置 Input Widgets→Double SpinBox 2控件介绍

Double SpinBox控件(小数旋转框)继承于QSpinBox,样式如图3-70所示。Double SpinBox与SpinBox的不同是其可以表示小数,而其他的功能都一样。 图3-70 Double SpinBox控件
3控件设置选项 在Double SpinBox控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置编辑框的字体; value:SpinBox默认值; lineStep:使用箭头来改变旋转框的值的递增/递减量; minValue:SpinBox的最小值; maxValue:SpinBox的最大值; prefix:SpinBox的前缀字符串; Suffix:SpinBox的后缀字符串;

decimals:SpinBox的小数位数。 4常用成员函数
1 1) QDoubleSpinBox::QDoubleSpinBox ( QWidget *parent = 0 )
构造一个父对象为parent的Double SpinBox,例如:
1 QDoubleSpinBox *dsb = new QDoubleSpinBox(this);
379 Slider控件
1控件位置 Input Widgets→Horizontal/Vertical Slider 2控件介绍 Slider控件(滑动条)的样式如图3-71所示。与Qt Designer不同的是,Qt Creator只是把Slider分成Horizontal/Vertical Slider两个控件,但是功能相同,两种滑动条之间可以相互转换,只须改变orientation属性即可。

图3-71 Slider控件
3控件设置选项 在Slider控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置滑动条上的字体; lineStep:滑动条值的最小跨度; value:滑动条的值; minValue:滑动条的最小值; maxValue:滑动条的最大值; orientation:滑动条的布局方向,Qt提供的选择有Horizontal和Vertical。 4常用成员函数
1 1) QSlider::QSlider ( QWidget *parent, const char *name = 0 )
构造一个名称为name、父对象为parent的Slider。
1 2) QSlider::QSlider ( Qrientation orientation, QWidget *parent , const char *name = 0 )

构造一个名称为name、父对象为parent和布局方向为orientation的Slider。
1 3) QSlider::QSlider ( int minValue, int maxValue, int pageStep, int value, Orientation orientation, QWidget *parent , const char *name = 0 )
构造一个名称为name、父对象为parent、布局方向为orientation、最大值为maxValue、最小值为minValue、页步长为pageStep和值为value的Slider。
1 4) void QSlider::setValue ( int v ) [virtual slot]
设置该滑动条的值为v。
1 5) int QSlider::value () const
返回该滑动条的值。
3710 示例16:SpinBox、Double SpinBox和Slider的应用(1)
首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除。设计界面如图3-72所示。

图3-72 示例16界面
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-20所示。 表3-20 主要控件说明
2示例说明 改变spinBox的值,horizontalSlider的值随着改变;改变horizontalSlider的值,spinBox的值也会随着改变; 改变doubleSpinBox的值,horizontalSlider_2的值随着改变;改变horizontalSlider_2的值,doubleSpinBox的值也会随着改变。 3示例实现 头文件mainwindowh(文中的粗体为需要添加的内容):
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 #include
4 namespace Ui {

5 class MainWindow;
6 }
7 class MainWindow : public QMainWindow
8 {
9 Q_OBJECT
10 public:
11 explicit MainWindow(QWidget *parent = 0);
12 ~MainWindow();
13 private:
14 Ui::MainWindow *ui;
15 private slots://声明槽函数
16 void slotDoubleSpinbox_Slider();
17 void slotSlider_DoubleSpinbox();
18 };
19 #endif // MAINWINDOW_H
在头文件中声明两个槽函数,槽函数slotDoubleSpinbox_Slider()使horizontalSlider_2的值随着doubleSpinBox的值发生变化而变化;槽函数slotSlider_DoubleSpinbox()使doubleSpinBox的值随着horizontalSlider_2的值改变而改变。另外,在Signals & Slots Editor窗口中添加了两个信号和槽的映射,如图3-73所示。 图3-73 信号与槽的映射
在主窗体mainwindowcpp文件中自动生成如下代码:

1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget parent) :
4
5
6 QMainWindow(parent),
7 ui(new Ui::MainWindow)
8 {
9 ui->setupUi(this);
10 }
11 MainWindow::~MainWindow()
12 {
13 delete ui;
14 }
3710 示例16:SpinBox、Double SpinBox和Slider的应用(2) 在主窗体mainwindowcpp文件中构造函数:
1 /
构造函数*/
2 MainWindow::MainWindow(QWidget *parent) :
3 QMainWindow(parent),
4 ui(new Ui::MainWindow)
5 {
6 ui->setupUi(this);
7
8 /*********信号和槽的映射******************************/
9 connect(ui->doubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(slotDoubleSpinbox_Slider()));
10 connect(ui->horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(slotSlider_DoubleSpinbox()));
11 }
在主窗体mainwindowcpp文件中添加槽函数slotDoubleSpinbox_Slider():

1 /槽函数:设置horizontalSlider_2的值/
2 void MainWindow::slotDoubleSpinbox_Slider()
3 {
4 ui->horizontalSlider_2->setValue((int)(ui->doubleSpinBox->value()100));
5 }
在主窗体mainwindowcpp文件中添加QSlider horizontalSlider_2的槽函数:
1 /
槽函数:设置doubleSpinBox的值*/
2 void MainWindow::slotSlider_DoubleSpinbox()
3 {
4 ui->doubleSpinBox->setValue((double)(ui->horizontalSlider_2->value())/100);
5 }
主文件maincpp没有进行任何更改,使用项目自动生成的即可。 4示例执行结果 示例执行结果如图3-74所示。 图3-74 示例16执行结果
3711 Dial控件
1控件位置 Input Widgets→Dial

2控件介绍 Dial控件(表盘)的样式如图3-75所示。Dial可以用来描述各种各样的仪表盘样式。 图3-75 Dial控件
3控件设置选项 在Dial控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置表盘上的字体; lineStep:表盘值的最小跨度; value:表盘的值; minValue:表盘的最小值; maxValue:表盘的最大值; notchTarget:表盘的刻度;

notchesVisible:是否显示表盘刻度,值为true时显示,否则不显示。 4常用成员函数
1 1) QDial::QDial ( QWidget *parent = 0, const char *name = 0, WFlags f = 0 )
构造一个名称为name、父对象为parent的Dial。
1 2) QDial::QDial ( int minValue, int maxValue, int pageStep, int value, QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent、最大值为maxValue、最小值为minValue、步长为pageStep和值为value的Dial。
1 3) void QDial::setValue ( int v ) [virtual slot]
设置该表盘的值为v。
1 4) int QDial::value () const
返回该表盘的值。
3712 示例17:Dial的应用
Dial是绘制一些表盘时的最好选择,界面美观大方,使用起来还很简单。下面就通过示例来了解Dail的具体用法。 首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除,界面设计结果如图3-76所示。

图3-76 示例17界面
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-21所示。 2示例说明 改变spinBox的值,dial的值随着改变;改变dial的值,spinBox的值也会随着改变。 3示例实现 在这个示例中,不需要手动添加任何代码,只须在Signals & Slots Editor窗口中添加了两个信号和槽的映射即可,如图3-77所示。 图3-77 信号与槽的映射
4示例执行结果 示例执行结果如图3-78所示。

图3-78 示例17执行结果
表3-21 主要控件说明
3713 ScrollBar控件
1控件位置 Input Widgets→Horizontal/Vertical ScrollBar 2控件介绍
ScrollBar控件(滚动条)的样式如图3-79所示。ScrollBar和Slider相同,Qt Creator只是把Slider分成Horizontal Slider和Vertical

Slider两个控件。两种滚动条之间同样可以相互转换,只须改变orientation属性即可。 图3-79 ScrollBar控件3控件设置选项
在ScrollBar控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置滑动条上的字体; lineStep:滑动条值的最小跨度; value:滑动条的值; minValue:滑动条的最小值; maxValue:滑动条的最大值;

orientation:滑动条的布局方向,Qt提供的选择有Horizontal和Vertical。 4常用成员函数
1 1) QScrollBar::QScrollBar ( QWidget *parent, const char *name = 0 )
构造一个名称为name、父对象为parent的ScrollBar。
1 2) QScrollBar::QScrollBar ( Orientation orientation, QWidget *parent, const char *name = 0 )
构造一个名称为name、父对象为parent、布局方向为orientation的ScrollBar。
1 3) void QScrollBar::setValue ( int v ) [slot]
设置该滚动条的值为v。
1 4) int QScrollBar::value () const
返回该滚动条的值。
3714 DateEdit控件
1控件位置 Input Widgets→DateEdit 2控件介绍 DateEdit控件(日期编辑框)的样式如图3-80所示,是用来编辑和显示日期的控件。

图3-80 DateEdit控件
3控件设置选项 在DateEdit控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置文本框的字体; date:显示的日期; minValue:日期的最小值; maxValue:日期的最大值; order:设置日期显示格式,Qt提供的格式有YMD、YDM、DMY。 4常用成员函数
1 1) QDateEdit::QDateEdit ( QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的DateEdit。
1 2) QDateEdit::QDateEdit ( const QDate & date, QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent、当前显示日期为date的DateEdit。下面是以当前日期构造的一个对象示例:
1 QDateEdit *Date = new QDateEdit(QDate::currentDate(), this );
2 3) QDate QDateEdit::date () const
返回DateEdit控件Date的值。
1 4) void QDateEdit::setDate ( const QDate & date ) [virtual]
设置DateEdit控件Date的值为date。
1 5) void QDateEdit::setDay ( int day ) [virtual protected]
设置DateEdit控件Date的Day为day,必须确保day为有效值。
1 6) void QDateEdit::setMonth ( int month ) [virtual protected]

设置DateEdit控件Date的Month为month,必须确保month为有效值。
1 7) void QDateEdit::setYear ( int year ) [virtual protected]
设置DateEdit控件Date的Year为year,必须确保year为有效值。
3715 TimeEdit控件
1控件位置 Input Widgets→TimeEdit 2控件介绍 TimeEdit控件(时间编辑框)的样式如图3-81所示,是用来编辑和显示时间的控件。 图3-81 TimeEdit控件
3控件设置选项 在TimeEdit控件的properties选项中,一般常对以下选项进行设置: name:该控件对应源代码中的名称; font:设置文本框的字体; time:显示的日期;
minValue:时间的最小值,默认是00:00:00;

maxValue:时间的最大值,默认是23:59:59; display:设置时间显示格式。 4常用成员函数
1 1) QTimeEdit::QTimeEdit ( QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的TimeEdit。
1 2) QTimeEdit::QTimeEdit ( const QTime & time, QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent、当前显示时间为time的TimeEdit。
1 3) QTime QTimeEdit::time () const
返回TimeEdit控件Time的值。
1 4) void QTimeEdit::setTime ( const QTime & time ) [virtual]
设置TimeEdit控件Time的值为time。
1 5) void QTimeEdit::setHour ( int h ) [virtual protected]
设置TimeEdit控件Time的Hour为h,必须确保h为有效值。
1 6) void QTimeEdit::setMinute ( int m ) [virtual protected]
设置TimeEdit控件Time的Minute为m,必须确保m为有效值。
1 7) void QTimeEdit::setSecond ( int s ) [virtual protected]
设置TimeEdit控件Time的Second为s,必须确保s为有效值。

3716 DateTimeEdit控件
1控件位置 Input Widgets→DateTimeEdit 2控件介绍 DateTimeEdit控件(日期时间编辑框)的样式如图3-82所示。DateTimeEdit是一个用来编辑和显示日期和时间的控件,相当于把DateEdit和TimeEdit联合起来一起使用。这里不做过多介绍,会在接下来的示例中具体介绍DateTimeEdit控件的用法。 图3-82 DateTimeEdit控件
3控件设置选项 在DateTimeEdit控件的properties选项中,一般常对以下选项进行设置: name:该控件对应源代码中的名称;
font:设置文本框的字体;

datetime:显示的日期和时间。
3717 示例18:DateEdit、TimeEdit和DateTimeEdit的应用(1)
首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除,界面设计结果如图3-83所示。 图3-83 示例18界面
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-22所示。 表3-22 主要控件说明

2示例说明 程序执行后,dateTimeEdit显示当前系统时间,并时刻更新; dateTimeEdit、dateEdit和timeEdit是只读的; 单击按钮“Edit Date”,可以编辑dateEdit,dateTimeEdit和dateEdit是同步的。单击按钮“OK”,结束编辑,dateEidt变成只读的; 单击按钮“Edit Time”,可以编辑timeEdit,dateTimeEdit和timeEdit是同步的。单击按钮“OK”,结束编辑,timeEidt变成只读的。 3示例实现 头文件mainwindowh(文中的粗体为需要添加的内容):
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 #include
4 namespace Ui {
5 class MainWindow;
6 }
7 class MainWindow : public QMainWindow
8 {
9 Q_OBJECT
10 public:

11 explicit MainWindow(QWidget *parent = 0);
12 ~MainWindow();
13 private:
14 Ui::MainWindow *ui;
15 private slots://声明槽函数
16 void on_btnEditTime_clicked();
17 void on_btnOk_clicked();
18 void on_btnEditDate_clicked();
19 void timeoutslot();
20 };
21 #endif // MAINWINDOW_H
声明四个槽函数,槽函数timeoutslot()是自己声明的,对应定时器timer;其他三个槽函数都是通过右击控件→Go to slots自动生成的,所以不用在实现文件中添加映射函数。 在主窗体mainwindowcpp文件中自动生成如下代码:
1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget *parent) :
4 QMainWindow(parent),
5 ui(new Ui::MainWindow)
6 {
7 ui->setupUi(this);
8 }
9 MainWindow::~MainWindow()
10
11
12 {
13 delete ui;
14 }
C

3717 示例18:DateEdit、TimeEdit和DateTimeEdit的应用(2) 在主窗体mainwindowcpp文件中添加的头文件:
1 #include
在主窗体mainwindowcpp文件中构造函数:
1 /构造函数/
2 MainWindow::MainWindow(QWidget *parent) :
3 QMainWindow(parent),
4 ui(new Ui::MainWindow)
5 {
6 ui->setupUi(this);
7
8 /*********初始化**********************************/
9 ui->dateTimeEdit->setDate(QDate::currentDate()); //获取当前日期
10 ui->dateTimeEdit->setTime(QTime::currentTime());//获取当前时间
11 QTimer *timer=new QTimer(this);
12 connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽
13

14 /*********启动timer定时器******************************/
15 timer->start(1000);
16 }
在主窗体mainwindowcpp文件中添加QPushButton btnEditDate的槽函数:
1 /***********定义槽函数,编辑date***********************/
2 void MainWindow::on_btnEditDate_clicked()
3 {
4 ui->dateEdit->setReadOnly(false); //设置dateEdit的只读属性为假
5 connect(ui->dateEdit,SIGNAL(dateChanged(QDate)),ui->dateTimeEdit, SLOT(setDate(QDate)));
6 }
在主窗体mainwindowcpp文件中添加QPushButton btnEditTime的槽函数:
1 /**********定义槽函数,编辑时间***************************/
2 void MainWindow::on_btnEditTime_clicked()
3 {
4 ui->timeEdit->setReadOnly(false); //设置timeEdit的只读属性为假
5 connect(ui->timeEdit,SIGNAL(timeChanged(QTime)),ui->dateTimeEdit, SLOT(setTime(QTime)));
6 }

在主窗体mainwindowcpp文件中添加QPushButton btnOk的槽函数:
1 /***********定义槽函数,保存编辑***************************/
2 void MainWindow::on_btnOk_clicked()
3 {
4 ui->dateEdit->setReadOnly(true);
5 ui->timeEdit->setReadOnly(true);
6 }
在主窗体mainwindowcpp文件中添加QTimer timer的槽函数:
1 /***********定义timer的槽函数*********************************/
2 void MainWindow::timeoutslot()
3 {
4 QDate date = ui->dateTimeEdit->date();
5
6
7 QTime time = ui->dateTimeEdit->time();
8 QTime time1(23,59,59);
9 if(time == time1)
10 {
11 datedate = dateaddDays(1);
12 }
13 timetime = timeaddSecs(1);
14 ui->dateTimeEdit->setDate(date);
15 ui->dateTimeEdit->setTime(time);
16 }
主文件maincpp没有进行任何更改,使用项目自动生成的即可。 4示例执行结果

示例执行结果如图3-84所示。 图3-84 示例18执行结果
38 显示组件(Display Widgets)
Qt Designer有十种DisplayWidgets,如图3-85所示。 图3-85 Display控件

Display Widgets的Qt类和名称介绍如表3-23所示。 表3-23 Display Widgets介绍
本节主要介绍Qt Creator的Display Widgets的使用方法。Qt Creator比Qt Designer提供更多的Display Widgets。 下面就来具体介绍各种Display Widgets的用法。
381 Label控件
1控件位置 Display Widgets→Label 2控件介绍 Label控件(标签)的样式如图3-86所示。同Qt Designer中的TextLabel控件。 图3-86 Label控件

3控件设置选项 在Label控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置text的字体; text:用来设置或返回标签控件中显示的文本信息。 4常用成员函数
1 1) QLabel::QLabel ( QWidget *parent, const char *name = 0, WFlags f = 0 )
构造一个名称为name、父对象为parent和标记符为f的TextLabel。
1 2) QLabel::QLabel ( const QString & text, QWidget *parent, const char *name = 0, WFlags f = 0 )
构造一个名称为name、父对象为parent、标记符为f和内容为text的TextLabel。
1 3) void QLabel::clear () [slot]
清除标签内容。
1 4) void QLabel::setText ( const QString & ) [virtual slot]
设置标签的文本。
1 5) QString QLabel::text () const
返回标签的文本。

382 TextBrowser控件
1控件位置 Display Widgets→TextBrowser 2控件介绍 TextBrowser控件(文本浏览器)的样式如图3-87所示,QTextBrowser继承自QTextEdit。TextBrowser是只读的,不允许对内容进行更改,但是相对于QTextEdit来讲,它还具有链接文本的作用。 图3-87 TextBrowser控件
3控件设置选项 在TextBrowser控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置显示框字体;

frameShape:边框样式,Qt Designer提供了多项选择; frameShadow:边框阴影,Qt Designer提供的选择有plain、raised、sunken; lineWidth:边框线宽; text:显示的文本; source:显示的文件名称,如果没有文件显示或来源,则显示空字符串。 4常用成员函数
1 1) QTextBrowser::QTextBrowser ( QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的TextBrowser。
1 2) void QTextBrowser::backward () [virtual slot]
更改内置导航链接的文件清单为显示前一个文档文件,如果没有以前的文档,就什么都不做,可以实现向前翻页的功能。
1 3) void QTextBrowser::forward () [virtual slot]
更改内置导航链接的文件清单为显示下一个文档文件,如果没有以前的文档,就什么都不做,可以实现向后翻页的功能。
1 4) void QTextBrowser::home () [virtual slot]
更改显示的文件浏览器中的链接,显示第一个文件。
1 5) void QTextBrowser::linkClicked ( const QString & link ) [signal]
当单击链接时,发射该信号。

1 6) void QTextBrowser::reload () [virtual slot]
重新载入当前的设置源。
1 7) void QTextBrowser::setSource ( const QString & name ) [virtual slot]
设置当前显示的文件名称为name。
1 8) QString QTextBrowser::source () const
返回当前显示的文件的文件名称。
383 示例19:TextBrower的应用
QTextBrower继承于QTextEdit类,增加了导航功能,可以用TextBrower打开超链接。下面通过一个示例来学习用TextBrower打开超链接的方法。 首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除,界面设计结果如图3-88所示。 图3-88 示例19界面

1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-24所示。 表3-24 主要控件说明
2示例说明 程序执行后,会在Text Brower中添加三个超链接; 单击超链接,使用默认浏览器打开该超链接的网站。 3示例实现 在主窗体mainwindowcpp文件中自动生成如下代码:
1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget *parent) :
4 QMainWindow(parent),
5 ui(new Ui::MainWindow)
6 {
7 ui->setupUi(this);
8 }
9 MainWindow::~MainWindow()
10 {
11 delete ui;
12 }
在主窗体mainwindowcpp文件中添加的头文件:

1 #include
在主窗体mainwindowcpp文件中构造函数(文中的粗体为需要添加的内容):
1 MainWindow::MainWindow(QWidget *parent) :
2 QMainWindow(parent),
3 ui(new Ui::MainWindow)
4 {
5 ui->setupUi(this);
6
7 /*********打开tBwsShow的外部链接设置**************************/
8 ui->tBwsShow->setOpenLinks(true);
9 ui->tBwsShow->setOpenExternalLinks(true);
10
11 /*********添加链接***********************************************/
12 ui->tBwsShow->append(QString::fromLocal8Bit("<a href="http://wwwbaiducom">baidu"));
13 ui->tBwsShow->append(QString::fromLocal8Bit("<a href = "http://wwwsinacomcn/">sina"));
14 ui->tBwsShow->append(QString::fromLocal8Bit("<a href = "http://wwwqqcom/">qq"));
15 }
主文件maincpp没有进行任何更改,使用项目自动生成的即可。

4示例执行结果 示例执行结果如图3-89所示。 图3-89 示例19执行结果
384 GraphicsView控件
1控件位置 Display Widgets→GraphicsView 2控件介绍
GraphicsView(绘图视图)是用于显示QGraphicsScene内容的控件。学习该控件就不得不了解GraphicsView框架,GraphicsView框架为2D绘图提供一个简单、容易使用、功能强大的解决方案。Graphics View框架由三个主要的类组成:QGraphicsItem、QGraphicsScene和QGraphicsView。其中QGraphicsItem定义图元;QGraphicsScene定义场景,包含所有需要绘制的图元,根据用户的操作改变图元的状态;QGraphicsView定义观察

场景的视窗,可以充当绘图的区域,成为独立的窗体被弹出,或者嵌入其他UI组件中形成复合UI组件。 3控件设置选项 在GraphicsView控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置显示框字体; frameShape:边框样式; frameShadow:边框阴影,Qt Creator提供的选择有plain、raised、sunken; lineWidth:边框线宽。 4常用成员函数
1 1) QGraphicsView::QGraphicsView ( QWidget *parent = 0 )
构造一个父对象为parent的GraphicsView。
1 2) QGraphicsView::QGraphicsView ( QGraphicsScene *scene, QWidget *parent = 0 )
构造一个父对象为parent的GraphicsView,填充场景scene到该GraphicsView。
1 3) void QGraphicsView::centerOn ( const QPointF & pos )
调整视窗的内容,确保点pos在视窗中居中。

1 4) void QGraphicsView::centerOn ( qreal x, qreal y )
这是一个重载函数,函数功能同函数3),相当于调用center(QPointF(x,y))。
1 5) void QGraphicsView::centerOn ( const QGraphicsItem *item )
这是一个重载函数,函数功能同函数3),调整视区的内容,使项目item为中心。
1 6) void QGraphicsView::ensureVisible ( const QRectF & rect, int xmargin = 50, int ymargin = 50 )
调整视窗的内容,使视窗rect中的内容是可见的。
1 7) void QGraphicsView::ensureVisible ( qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50 )
这是一个重载函数,函数功能同函数6),相当于调用ensureVisible(QRectF(x,y,w,h),xmargin,ymargin)。
1 8) void QGraphicsView::ensureVisible ( const QGraphicsItem *item, int xmargin = 50, int ymargin = 50 )
这是一个重载函数,函数功能同函数6),调整视窗的内容,使item的内容可见。
1 9) QGraphicsItem *QGraphicsView::itemAt ( const QPoint & pos ) const
返回pos处的item。
1 10) QGraphicsItem *QGraphicsView::itemAt ( int x, int y ) const
这是一个重载函数,函数功能同函数9),返回坐标(x,y)处的item。

1 11) QList<QGraphicsItem *> QGraphicsView::items () const
返回相关场景中所用的图元。
1 12) QList<QGraphicsItem *> QGraphicsView::items ( const QPoint & pos ) const
返回视图中位置pos处的项目列表。
1 13) QGraphicsScene *QGraphicsView::scene () const
返回当前可视化的场景;如果当前没有可视化的场景,则返回0。
1 14) void QGraphicsView::setScene ( QGraphicsScene *scene )
设置场景scene为当前可视化场景。
1 15) void QGraphicsView::updateScene ( const QList & rects ) [slot]
面更新场景。 《linux环境下Qt4图形界面与mysql编程》本书以“图形界面编程控件与数据库编程基础→简单易学的实例→实际工程项目开发与场景分析”为写作主线,以当前最新的Qt47为依据,采用“深入分析控件+实例解析”的方式,并配合经典的实际工程项目,对linux操作系统下的Qt47与mysql编程技术进行了全面细致的讲解。本节为大家介绍示例20:GraphicsView的应用。 AD:

385 示例20:GraphicsView的应用(1)
本示例通过用GraphicsView显示图片文件,简单地介绍了Graphics View、Graphics Scene和QGraphicsItem之间的关系。 首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的toolBar、menuBar和statusBar删除,界面设计结果如图3-90所示。 图3-90 示例20界
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-25所示。 表3-25 主要控件说明

2示例说明 界面布局设置好之后,添加资源文件,把图片文件1jpg添加到资源文件中。添加资源文件的方法在示例3中已经详细介绍过了,这里就不再重复介绍。 程序执行后,自动加载图片1jpg,不要把程序最大化,使边框出现滚动条,可以通过鼠标在一定空间内拖动图片1jpg; 单击菜单栏选择“Open”选项,可以打开其他图片; 单击菜单栏选择“Exit”选项,退出程序。 3示例实现 头文件mainwindowh(文中的粗体为需要添加的内容):
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 #include
4 #include
5 #include
6 namespace Ui {
7 class MainWindow;
8 }
9 class MainWindow : public QMainWindow
10 {
11 Q_OBJECT
12 public:
13 explicit MainWindow(QWidget *parent = 0);
14 ~MainWindow();

15 QString pictureName;//当前显示的图片
16 QGraphicsScene *scene;//声明scene
17 QGraphicsPixmapItem *item;//声明item
18 private:
19 Ui::MainWindow *ui;
20 private slots://声明槽函数
21 void slotOpen();
22 void slotExit();
23 };
24 #endif // MAINWINDOW_H
在主窗体mainwindowcpp文件中自动生成如下代码:
1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget *parent) :
4 QMainWindow(parent),
5 ui(new Ui::MainWindow)
6 {
7 ui->setupUi(this);
8 }
9 MainWindow::~MainWindow()
10 {
11 delete ui;
12 }
385 示例20:GraphicsView的应用(2) 在主窗体mainwindowcpp文件中添加的头文件:
1 #include
在主窗体mainwindowcpp文件中构造函数:

1 MainWindow::MainWindow(QWidget *parent) :
2 QMainWindow(parent),
3 ui(new Ui::MainWindow)
4 {
5 ui->setupUi(this);
6
7 /****************界面初始化********************************/
8 this->pictureName = ":/1jpg";
9 scene = new QGraphicsScene;
10 scene->setSceneRect(-300,-300,600,600);
11 scene->setItemIndexMethod(QGraphicsScene::NoIndex);
12 QPixmap pixmap(this->pictureName);
13 pixmappixmap = pixmapscaledToWidth(200);
14 item = scene->addPixmap(pixmap);
15
16 /***************设置view的场景*****************************/
17 ui->view->setScene(scene);
18 ui->view->setRenderHint(QPainter::Antialiasing);
19 ui->view->setCacheMode(QGraphicsView::CacheBackground);
20 ui->view->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);

21 ui->view->setDragMode(QGraphicsView::ScrollHandDrag);
22 ui->view->resize(400,300);
23
24 /***************信号和槽函数的映射**************************/
25 connect(ui->actionOpen,SIGNAL(triggered()),this,SLOT(slotOpen()));
26 connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(slotExit()));
27 }
28
29 在主窗体mainwindowcpp文件中添加QAction actionOpen的槽函数:
30
31 /*****************定义槽函数,打开图片**************************/
32 void MainWindow::slotOpen()
33 {
34 this->pictureName = QFileDialog::getOpenFileName(this);//打开文件对话框
35 if(!this->pictureNameisEmpty())
36 {
37 QPixmap pixmap(this->pictureName);
38 pixmappixmap = pixmapscaledToWidth(200);
39 item = scene->addPixmap(pixmap);

40 ui->view->setScene(scene);//设置view的场景
41 }
42 }
在主窗体mainwindowcpp文件中添加QAction actionExit的槽函数:
1 /******************定义槽函数,退出程序**************************/
2 void MainWindow::slotExit()
3 {
4 this->close();
5 }
4示例执行结果 示例执行结果如图3-91所示。 图3-91 示例20执行结果
386 Calendar控件
1控件位置

Display Widgets→Calendar 2控件介绍 Calendar控件(日历)的样式如图3-92所示。顾名思义,这是一个和日历有关的控件,使用起来很简单,也很方便。 图3-92 Calendar控件3控件设置选项
在Calendar控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置text的字体; selectedDate:当前日期; minimumDate:该日历控件能够显示的最小日期; maxmumDate:该日历控件能够显示的最大日期; firstDayOfWeek:每星期的第一天;

gridVisible:是否显示网格; dateEditEnable:是否允许编辑日历。 4常用成员函数
1 1) QCalendarWidget::QCalendarWidget ( QWidget *parent = 0 )
构造一个父对象为parent的Calendar。
1 2) int QCalendarWidget::monthShown () const
返回当前显示的月份。
1 3) void QCalendarWidget::setCurrentPage ( int year, int month ) [slot]
显示给定的年份和月份。
1 4) void QCalendarWidget::setDateRange ( const QDate & min, const QDate & max ) [slot]
设置该Calendar的显示范围,最小日期为min,最大为max。
1 5) void QCalendarWidget::showSelectedDate () [slot]
显示当前选中的日期。
1 6) void QCalendarWidget::showToday () [slot]
显示系统当前日期。
1 7) int QCalendarWidget::yearShown () const
返回当前显示的年份。

387 示例21:Calendar的应用
首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的menuBar、toolBar和statusBar删除,界面设计结果如图3-93所示。 图3-93 示例21界面
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-26所示。 图3-94 信号与槽的映射
2示例说明 在Signals & Slots Editor中添加槽函数如图3-94所示;
程序执行后,只显示dateEdit和pushButton两个控件;

单击按钮“Edit Date”,显示calendarWidget控件,可以通过calendarWidget控件来编辑dateEdit的日期。在calendarWidget控件上选定日期并单击之后,dateEdit的日期随之改变。同时calendarWidget控件隐藏。 表3-26 主要控件说明
3示例实现 头文件mainwindowh(文中的粗体为需要添加的内容):
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 #include
4 namespace Ui {
5 class MainWindow;
6 }
7 class MainWindow : public QMainWindow
8 {
9 Q_OBJECT
10 public:
11 explicit MainWindow(QWidget *parent = 0);

12 ~MainWindow();
13 private:
14 Ui::MainWindow *ui;
15 private slots: //声明槽函数
16 void on_calendarWidget_clicked(QDate date);
17 };
18 #endif // MAINWINDOW_H
声明一个槽函数on_calendarWidget_clicked(QDate date),这个槽函数是通过右击calendarWidget→Go to slot自动生成的,对应calendarWidget的clicked(QDate date)信号。 在主窗体mainwindowcpp文件中自动生成如下代码:
1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget *parent) :
4 QMainWindow(parent),
5 ui(new Ui::MainWindow)
6 {
7 ui->setupUi(this);
8 }
9 MainWindow::~MainWindow()
10 {
11 delete ui;
12 }
在主窗体mainwindowcpp文件中构造函数:
1 MainWindow::MainWindow(QWidget *parent) :
2 QMainWindow(parent),
3 ui(new Ui::MainWindow)
4 {
5 ui->setupUi(this);

6
7 /****************隐藏日历控件*********************/
8 ui->calendarWidget->hide();
9 }
在主窗体mainwindowcpp文件中添加QCalendarWidget calendarWidget的槽函数:
1 /********************定义槽函数,编辑日期******************/
2 void MainWindow::on_calendarWidget_clicked(QDate date)
3 {
4 ui->dateEdit->setDate(ui->calendarWidget->selectedDate());
5 ui->calendarWidget->hide();
6 }
主文件maincpp没有进行任何更改,使用项目自动生成的即可。 4示例执行结果 示例执行结果如图3-95所示。

图3-95 示例21执行结果
388 LCDNumber控件
1控件位置 Display Widgets→LCDNumber 2控件介绍 图3-96 LCDNumber控件
LCDNumber控件(LCD数字显示框)的样式如图3-96所示,可以显示十六进制、十进制、八进制或二进制数。 3控件设置选项
在LCDNumber控件的properties选项中,一般常对以下选项进行设置。

name:该控件对应源代码中的名称; font:设置显示框字体; frameShape:边框样式,Qt Designer提供了多项选择。 frameShadow:边框阴影,Qt Designer提供的选择有plain、raised、sunken。 lineWidth:边框线宽; mode:设置显示格式,Qt提供的格式有十六进制、十进制、八进制、二进制。 value:该LCDNumber的值。 intValue:该LCDNumber的整数值; numDigits:显示框最大可以显示的数字位数。 4常用成员函数
1 1) QLCDNumber::QLCDNumber ( QWidget *parent = 0, const char *name = 0 )
构造一个名称为name、父对象为parent的LCD Number。
1 2) QLCDNumber::QLCDNumber ( uint numDigits, QWidget *parent = 0, const char *name = 0 )

构造一个名称为name、父对象为parent和显示框最大可以显示的数字位数为numDigits的LCDNumber。如下构造了一个最多能显示4位数的LCD显示器:
1 QLCDNumber *lcd= new QLCDNumber (4,this);
2 3) void QLCDNumber::display ( int num ) [slot]
设置显示的值为num。
1 4) void QLCDNumber::display ( const QString & s ) [slot]
这是一个重载函数,函数功能同函数4),显示s。
1 5) void QLCDNumber::display ( double num ) [slot]
这是一个重载函数,函数功能同函数5),显示num。
1 6) int QLCDNumber::intValue () const
返回显示值的整数值,对应intValue属性。
1 7) int QLCDNumber::numDigits () const
返回显示框最大可以显示的数字位数,对应numDigits属性。
1 8) double QLCDNumber::value () const
返回该LCDNumber显示的值。
389 示例22:LCDNumber的应用
首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的menuBar、toolBar和statusBar删除,界面设计结果如图3-97所示。

图3-97 示例22界面
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-27所示。 表3-27 主要控件说明
2示例说明 在Signals & Slots Editor中添加槽函数如图3-98所示;

图3-98 信号和槽的映射
程序执行后,改变horizontalSlider的值,lcdNumber和spinBox的值随着改变; 改变spinBox的值,lcdNumber和horizontalSlider的值随着改变。 3示例实现 本示例不需要添加任何代码,只需新建一个Qt Gui Application项目,把项目在主界面中自动生成的menuBar、toolBar和statusBar删除,按照以上步骤添加完成即可。 4示例执行结果 示例执行结果如图3-99所示。 图3-99 示例22执行结果

3810 ProgressBar控件
1控件位置 Display Widgets→ProgressBar 2控件介绍 ProgressBar控件(进度条)的样式如图3-100所示,显示为一个水平进度条。一个进度条是用来给用户显示操作进度的,证明他们的应用程序仍在运行,进度条控件非常常见,例如我们下载资源时经常会显示进度条来显示下载进度。 图3-100 ProgressBar控件面
3控件设置选项 在ProgressBar控件的properties选项中,一般常对以下选项进行设置。 name:该控件对应源代码中的名称; font:设置显示框字体; frameShape:边框样式,Qt Designer提供了多项选择;
frameShadow:边框阴影,Qt Designer提供的选择有plain、raised、sunken。

lineWidth:边框线宽; progress:进度条当前的进度值。 4常用成员函数
1 1) QProgressBar::QProgressBar ( QWidget *parent = 0, const char *name = 0, WFlags f = 0 )
构造一个名称为name、父对象为parent的ProgressBar。
1 2) QProgressBar::QProgressBar ( int totalSteps, QWidget *parent = 0, const char *name = 0, WFlags f = 0 )
构造一个名称为name、父对象为parent和总的进度值为totalSteps的ProgressBar。如下构造了一个进度值为100的进度条:
1 QProgressBar *pgb= new QProgressBar (100,this);
2 3) int QProgressBar::progress () const
返回该进度条的当前进度值。
1 4) void QProgressBar::setProgress ( int progress ) [virtual slot]
设置该进度条的当前进度值为progress。
1 5) void QProgressBar::reset () [slot]
把进度条恢复到初始状态。

3811 示例23:ProgressBar的应用(1)
首先创建标准的Qt Gui Application项目,把项目在主界面中自动生成的menuBar、toolBar和statusBar删除,界面设计结果如图3-101所示。 图3-101 示例23界面
1控件说明 在属性编辑窗口中对控件的属性进行修改,修改内容如表3-28所示。 2示例说明 单击按钮“ProgressBar”,progressBar的值在10秒内从0变为10; 单击按钮“ProgressDialog”,弹出一个有进度条的窗口,进度条在10秒内从0变为10。如图3-102所示,单击按钮“Cancel”,强制结束窗口。

图3-102 ProgressDialog
表3-28 主要控件说明
3示例实现 头文件mainwindowh(文中的粗体为需要添加的内容):
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 #include
4 namespace Ui {
5 class MainWindow;
6 }
7 class MainWindow : public QMainWindow
8 {
9 Q_OBJECT

10 public:
11 explicit MainWindow(QWidget *parent = 0);
12 ~MainWindow();
13 int num;//文件数目
14 private:
15 Ui::MainWindow *ui;
16 private slots://声明槽函数
17 void on_btnProgressDialog_clicked();
18 void on_btnProgressBar_clicked();
19 };
20 #endif // MAINWINDOW_H
声明一个变量num和两个槽函数。num是控件progressBar当前的值,两个槽函数分别对应两个按钮的clicked()信号。这两个槽函数都是通过右击控件→Go to slot生成的,所以不用在实现函数中写信号与槽的映射代码。 在主窗体mainwindowcpp文件中自动生成如下代码:
1 #include "mainwindowh"
2 #include "ui_mainwindowh"
3 MainWindow::MainWindow(QWidget *parent) :
4 QMainWindow(parent),
5 ui(new Ui::MainWindow)
6 {
7 ui->setupUi(this);
8 }
9 MainWindow::~MainWindow()
10 {
11 delete ui;
12 }

3811 示例23:ProgressBar的应用(2) 在主窗体mainwindowcpp文件中添加的头文件:
1 #include
2 #include
在主窗体mainwindowcpp文件中构造函数:
1 /构造函数/
2 MainWindow::MainWindow(QWidget parent) :
3 QMainWindow(parent),
4 ui(new Ui::MainWindow)
5 {
6 ui->setupUi(this);
7 num=10;//初始化
8 }
在主窗体mainwindowcpp文件中添加QPushButton btnProgressBar的槽函数:
1 /
槽函数:进度条*/
2 void MainWindow::on_btnProgressBar_clicked()
3 {
4 ui->progressBar->setRange(0,num);//设置progressBar的取值范围
5 for(int i=1;i<=num;i++)
6 {
7 ui->progressBar->setValue(i);//给进度条赋值
8 sleep(1);

9 }
10 }
在主窗体mainwindowcpp文件中添加QPushButton btnProgressBarDialog的槽函数:
1 /槽函数:进度条对话框/
2 void MainWindow::on_btnProgressDialog_clicked()
3 {
4 QProgressDialog *progressDialog = new QProgressDialog(this);
5 QFont font("ZYSong18030",12); //定义字体
6 progressDialog->setFont(font);//设置字体
7 progressDialog->setWindowModality(QT::WindowModal);
8 progressDialog->setMinimumDuration(5);
9 progressDialog->setWindowTitle("Please Waiting");
10
11
12 progressDialog->setLabelText(tr("Copying"));
13 progressDialog->setCancelButtonText(tr("Cancel"));

14 progressDialog->setRange(0,num);//设置进度对话框的进度条的取值范围
15 for(int i=1;i<=num;i++)
16 {
17 progressDialog->setValue(i);//对进度对话框的进度条赋值
18 qApp->processEvents();
19 sleep(1);
20 if(progressDialog->wasCanceled())
21 return;
22 }
23 }
主文件maincpp没有进行任何更改,使用项目自动生成的即可。 4示例执行结果 示例执行结果如图3-103和图3-104所示。 图3-103 单击按钮“ProgressBar”的结果

图3-104 单击按钮“ProgressDialog”的结果
3812 Line控件
1控件位置 Display Widgets→Horizontal/Vertical Line 2控件介绍 Line控件(线条)的样式如图3-105所示,它是用来装饰界面的控件,在界面中适当添加Line控件可以使界面更加美观、清晰。 图3-105 Line控件
3控件设置选项 在Line控件的properties选项中,一般常对以下选项进行设置。
name:该控件对应源代码中的名称;

frameShadow:线条阴影,Qt Designer提供的选择有plain、raised、sunken; lineWidth:线条线宽; orientation:线条布局方向。 Line控件就是一个装饰控件,使用简便,在此不再进行详细介绍。