Qt中有各种各样的控件,这里只介绍一些常用的。
1. 按钮组(Buttons)
按钮组(Buttons)如下图所示。
比如我们创建一个Quit按钮,代码如下所示。
//mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0);
~MyWidget();
};
#endif // MYWIDGET_H
//mywidget.cpp
#include "mywidget.h"
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
setMinimumSize( 200, 120 );
setMaximumSize( 200, 120 );
QPushButton *quit = new QPushButton( "Quit", this);
quit->setGeometry( 62, 40, 75, 30 );
quit->setFont( QFont( "Times", 18, QFont::Bold ) );
connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
}
MyWidget::~MyWidget()
{
}
main.cpp
#include "mywidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.setGeometry( 100, 100, 200, 120 );
w.show();
return a.exec();
}
运行后结果如下:
我们对其他按钮进行说明:
Tool Button 即工具按钮是提供对特定命令或者选项快速访问的特殊按钮。和普通的命令按钮不同,工具按钮不显示文本标签,而是图标。
Radio Button 即单选按钮,QRadioButton窗口部件为单选按钮提供了一个文本标签。QRadioButton是一个能够切换开(选择)或者关(没有选择)的选择按钮。通常单选按钮是用于当前用户选择许多中的一个选项。在同一时刻,单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前选择的按钮将要切换为关闭状态。
Check Box 即为复选按钮。QCheckBox窗口部件提供一个带文本标签的复选按钮。QCheckBox和QRadioButton都是选项按钮。QCheckBox能够在开(选中)或者关(未选中)之间切换。QCheckBox和QRadioButton的区别是在于对用户选择的限制。单选按钮定义了“多选一”的选择,而复选按钮定义了“多选多”的选择。
2. 输入部件组(Input Widgets)
输入部件组(Input Widgets)如下图所示。
在这之中主要介绍一下QDateTime类、QTimer类和QLineEdit类。
在Qt5中,可以使用QDateTime类来获得系统时间。通过QDateTime::currentDateTime()来获取本地系统的时间和日期信号。
QTimer的使用很简单,只需要几步就能完成定时器的应用。
1) 新建一个定时器
QTimer *time_clock=new QTimer(parent);
2) 连接这个定时器的信号和槽,利用定时器的timeout()。
connect(time_clock,SIGNAL(timeout()),this,SLOT(slottimedone()));
3)开启定时器,并设定定时周期。
定时器定时有两种方式,start(int time)和setSingleShot(true)。其中,start(int time)表示每隔“time”秒就会重启定时器,可以重复触发定时,利用stop()将定时器关掉;而setSingleShot(true)则是仅启动定时器一次。工程常用前者。
time_clock->start(2000);
QLineEdit窗体组件是一个单行文本编辑框。单行文本编辑框允许用户通过有用的编辑函数来输入和编辑单行纯文本,该编辑函数包括撤消和重做、剪切和粘贴、拖动和放下。
您也可以利用setText()或者insert()函数来改变文本,利用text()函数来获取文本编辑框的信息,也可以利用displayText()函数获取文本显示的信息。文本的选择可以通过setSelection()或者selectAll()函数来设置,也可以通过cut()、copy()、paste()函数来选择。如果您想改变文本的排列方式,可以通过setAlignment()函数来改变。
当您改变文本的时候,就要发射textChanged()信号;当您改变文本信息以后,除了调用setText()函数,还要发射textEdited()信号;当您移动光标的时候,就要发射cursorPositionChanged()信号;当您点击返回或者进入键的时候,就要反射returnPressed()信号。
3. 显示控件组(Display Widgets)
Graphics View对应于QGraphicsView类,是一种图形视图体系结构。将在后边的内容中专门作为一章详细来讲。
Text Browser 对应于QTextBrowser类。他继承自QTextEdit,而且仅是只读的,对里面的内容并不能进行更改,但是相对于QTextEdit来讲,它还具有链接文本的作用。
4. 空间间隔组(Spacers)
5. 布局管理组(Layouts)
这几组控件使用起来都比较简单,在这里不做赘述。下一小节将对容器组,项目视图组、项目控件组进行介绍。