qt基本组件教学课件_第1页
qt基本组件教学课件_第2页
qt基本组件教学课件_第3页
qt基本组件教学课件_第4页
qt基本组件教学课件_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Qt的组件Qt-C++图形用户界面库5.1按钮5.1.1推动按钮推动按钮的描述

推动或者命令按钮是任何GUI(图形用户界面)中最常用的窗口部件,它来命令计算机执行一些操作,或者回答一个问题。典型的按钮有确定(OK)、应用(Apply)、撤消(Cancel)、关闭(Close)、是(Yes)、否(No)和帮助(Help)等。

该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。标签中有下划线的字母(在此它的前面用“&”标明)表明快捷键,比如:QPushButton*pushbutton=newQPushButton("&Help",this); 这个实例中快捷键是Alt+H,并且文本标签将被显示为Help。Qt的组件Qt-C++图形用户界面库5.1按钮1Qt的组件Qt-C++图形用户界面库推动按钮的成员QPushButton(QWidget*parent=0)构造一个没有文本的推动按钮,参数为parent。QPushButton(constQString&text,QWidget*parent=0)构造一个父对象为parent、文本为text的推动按钮。QPushButton(constQIcon&icon,constQString&text,QWidget*parent=0)构造一个图标为icon、文本为text、父对象为parent的推动按钮。注意:您可以传递一个QPixmap作为一个图标(感谢由C++提供的隐含类型转换)。Qt的组件Qt-C++图形用户界面库推动按2Qt的组件Qt-C++图形用户界面库QPushButton()销毁这个推动按钮。voidQButton::setText(constQString&)设置这个按钮上显示的文本。voidQButton::pressed()当这个按钮被按下的时候,将要发射该信号。voidQPushButton::setMenu(QMenu*menu)这个按钮与弹出式的菜单menu联系在一起。这样就可以把一个普通的按钮变成菜单按钮,在该按钮的文本的右边会出现一个倒置的小三角。Qt的组件Qt-C++图形用户界面库QPushButton3Qt的组件Qt-C++图形用户界面库推动按钮的实例 该实例的功能,当您按下退出按钮的时候,就会退出系统。以下是该实例的代码:/*main.cpp*/#include<qapplication.h>//当窗口初始化的时候,引用的头文件#include<qpushbutton.h>//定义QPushButton对象,引用的头文件#include<qobject.h>//需要使用connect函数,引用的头文件intmain(intargc,char**argv){QApplicationapp(argc,argv);//窗体初始化QPushButton*pushbutton=newQPushButton("Quit");QObject::connect(pushbutton,SIGNAL(clicked()),pushbutton,SLOT(close()));pushbutton->show();//显示该窗体returnapp.exec();}Qt的组件Qt-C++图形用户界面库推动按4Qt的组件Qt-C++图形用户界面库推动按钮的实例 该实例的功能,当您按下退出按钮的时候,就会退出系统。以下是该实例的代码:/*main.cpp*/#include<qapplication.h>//当窗口初始化的时候,引用的头文件#include<qpushbutton.h>//定义QPushButton对象,引用的头文件#include<qobject.h>//需要使用connect函数,引用的头文件intmain(intargc,char**argv){QApplicationapp(argc,argv);//窗体初始化QPushButton*pushbutton=newQPushButton("Quit");QObject::connect(pushbutton,SIGNAL(clicked()),pushbutton,SLOT(close()));pushbutton->show();//显示该窗体returnapp.exec();}运行该实例的结果,如图所示:Qt的组件Qt-C++图形用户界面库推动按5Qt的组件Qt-C++图形用户界面库5.1.2单选按钮单选按钮的描述 QRadioButton窗口部件为单选按钮提供了一个文本标签。 QRadioButton是一个能够切换开(选择)或者关(没有选择)的选择按钮。通常单选按钮是用于当前用户选择许多中的一个选项。在同一时刻,单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前选择的按钮将要切换为关闭状态。 当一个按钮切换开或者关的时候,它就会发射toggled()信号。如果任何时刻你想触发一个行为来改变按钮的状态的时候,可以连接这个信号。否则,使用isChecked()来查看是否有其他按钮被选择。像上述的QPushButton一样,单选按钮能够显示文本和可选择的小图标。文本能够在构造函数中被设置,或者使用setText()函数;设置图标可以使用setIcon()函数来设置。Qt的组件Qt-C++图形用户界面库5.1.2单选按钮6Qt的组件Qt-C++图形用户界面库单选按钮的成员QRadioButton::QRadioButton(QWidget*parent=0)构造一个单选按钮的窗口组件,但是该组件没有文本或者图象映射。parent参数传递给QAbstractButton构造函数。QRadioButton::QRadioButton(constQString&text,QWidget*parent=0)构造一个单选按钮的窗体组件,该组件的参数为parent和text字符串。parent参数传递给QAbstractButton构造函数。Qt的组件Qt-C++图形用户界面库单选按7Qt的组件Qt-C++图形用户界面库5.1.3复选按钮复选按钮的描述QCheckBox窗口部件提供一个带文本标签的复选按钮。QCheckBox和QRadioButton都是选项按钮。QCheckBox能够在开(选中)或者关(未选中)之间切换。QCheckBox和QRadioButton的区别是在于对用户选择的限制。单选按钮定义了“多选一”的选择,而复选按钮定义了“多选多”的选择。QButtonGroup在视觉上能够把许多的复选按钮组合在一起,成为一个按钮组。 无论复选按钮选中或者是未选中,它都会发射一个信号toggled()。在任何时刻,如果您想改变复选按钮的状态的时候,需要连接toggled()信号触发这个行为。您也可以利用isChecked()函数来查询复选按钮是否被选中。Qt的组件Qt-C++图形用户界面库5.1.3复选按钮8Qt的组件Qt-C++图形用户界面库 除了常用的选中和未选中两个状态,QCheckBox还可以任意选择第三种状态来表明“没有改变”。当您需要给用户一个选中或者未选中复选按钮的选择时,这是非常有用的。如果您需要第三种状态,可以通过setTristate()来使它生效,利用checkState()函数来查询当前的切换状态。 与QPushButton一样,复选按钮可以显示文本或者任意的小图标。文本可以通过构造函数或者setText()来设置,图标可以通setIcon()来设置。Qt的组件Qt-C++图形用户界面库9Qt的组件Qt-C++图形用户界面库复选按钮的成员QCheckBox::QCheckBox(QWidget*parent=0)构造一个参数为parent的复选按钮,但是该按钮不显示文本信息。parent参数传递给QAbstractButton构造函数。QCheckBox::QCheckBox(constQString&text,QWidget*parent=0)构造一个参数为parent和text的复选按钮。parent参数传递给QAbstractButton构造函数。/4.1/qt.html#CheckState-enum/4.1/qt.html#CheckState-enum()const返回复选框的复选状态。也可以参考setCheckState()函数和Qt::CheckState。Qt的组件Qt-C++图形用户界面库复选按10Qt的组件Qt-C++图形用户界面库voidQCheckBox::setCheckState(Qt::CheckStatestate)参数state是用来设置复选框的复选状态。voidQCheckBox::stateChanged(intstate)

[signal]当复选框的状态改变的时候,就是发射stateChanged()信号。也就是说,用来检查用户选择还是没有选择。效果:Qt的组件Qt-C++图形用户界面库voidQCheck11Qt的组件Qt-C++图形用户界面库5.2标签5.2.1QLabelQLabel的描述QLabel窗口部件提供了显示文本或者图象,没有提供用户的交互功能。因为标签的外观可以通过各种各样的方式来配置,而且它可以为指定焦点记忆键到另外的窗体上。QLabel提供了以下内容类型:设置无格式的文本:可以通过setText()函数来设置,它将接收到Qstring传递给它的文本信息。

设置大量的文本:可以通过setText()函数来设置,它将接收到QString传递给它的大量信息。Qt的组件Qt-C++图形用户界面库5.2标签12Qt的组件Qt-C++图形用户界面库设置图象映射:可以通过setPixmap()函数来设置,它将接收到QPixmap传递给它的图象映射的信息。设置数字:可以通过setNum()函数来设置,它将接收到int类型或者double类型的数字信息,该函数将这些数字转变为无格式的信息。如果什么都不设置,在默认的情况下为空;如果清除标签中的信息,可以利用clear()函数。当使用任何函数来改变标签中的内容的时候,当前标签中的内容将被清除。Qt的组件Qt-C++图形用户界面库设置13Qt的组件Qt-C++图形用户界面库QLabel的外观可以通过几种方式来改变。QFrame所有设置在指定的框架窗体是可以使用的。QLabel窗体组件内容的位置可以通过setAlignment()和setIndent()函数来改变。文本内容可以通过setWordWrap()函数来设置字符根据哪个边界开始换行。例如:将一个字符串分成两行来显示,可以用以下方式来设置:QLabel*label=newQLabel(this);label->setFrameStyle(QFrame::Panel|QFrame::Sunken);label->setText("firstline\nsecondline");label->setAlignment(Qt::AlignButton|Qt::AlignRight);Qt的组件Qt-C++图形用户界面库QLa14Qt的组件Qt-C++图形用户界面库QLabel是经常为交互式窗体制作标签。为了交互式窗体的使用Qlabel提供了添加助记符的有用机制(可以参考QKeysequence),这种机制将设置键盘焦点到另外的一个窗体上(调用QLabel的setBuddy()函数)。例如:QLineEdit*phoneEdit=newQLineEdit(this);QLabel*phoneLabel=newQLabel("&Phone:",this);phoneLabel->setBuddy(phoneEdit); 在本实例中,当用户按Alt+P的时候,键盘焦点转移到标签的buddy(theQLineEdit)中。如果buddy是按钮(继承QAbstractButton类),触发这个助记符,可以看作是按钮点击。可以参考QLineEdit、QTextEdit、QPixmap、QMovie和GUIDesignHandbook::Label。Qt的组件Qt-C++图形用户界面库QLabel15Qt的组件Qt-C++图形用户界面库效果:

Qt的组件Qt-C++图形用户界面库效果:16Qt的组件Qt-C++图形用户界面库

QLabel的成员QLabel(QWidget*parent=0,Qt::WFlagsf=0)构造一个空的标签。parent和窗体标记f参数,将传递给QFrame构造函数。可以参考setAlignment()、setFrameStyle()和setIndent()。QLabel::QLabel(constQString&text,QWidget*parent=0,/4.1/qt.html#WFlags-typedeff=0)构造一个显示文本为text的标签。parent和窗体标记f参数,将传递给QFrame构造函数。可以参考setAlignment()、setFrameStyle()和setIndent()。QLabel::~QLabel()销毁这个标签。Qt的组件Qt-C++图形用户界面库QL17Qt的组件Qt-C++图形用户界面库QWidget*QLabel::buddy()const返回的一个标签的buddy。如果当前没有设置buddy,则返回为0。可以参考setBuddy()。voidQLabel::clear()[槽]用来清除标签中的任何内容。voidQLabel::setBuddy(QWidget*buddy)设置标签的buddy为另一个窗体的buddy。 当用户按下这个标签提示的快捷键的时候,键盘焦点将转移到标签的buddy窗体中。 buddy利用在一个文本信息中加前缀“&”字符的机制,它仅仅在QLabel中使用,这个“&”字符是用来设置快捷键的。该字符显示的是一个下划线,并且“&”字符不能显示出来。(也就是说,Qt::TextShowMnemonic改变对齐标记;参考setAlignment())。Qt的组件Qt-C++图形用户界面库QWidget*Q18Qt的组件Qt-C++图形用户界面库 如果在一个对话框中,您可能创建两个能够数据输入窗体部件,一个标签存放其中任意一个窗口部件输入的信息。代码如何编写,请参考以下代码:QLineEdit*nameedit=newQLineEdit(this);QLabel*namelabel=newQLabel("&Name:",this);namelabel->setBuddy(nameedit);QLineEdit*phoneedit=newQLineEdit(this);QLabel*phonelabel=newQLabel("&Phone:",this);phonelabel->setBuddy(phoneedit);以上代码,当用户按Alt+N快捷键的时候,焦点就跳跃到Name字段;当用户按Alt+P的时候,焦点就跳跃到Phone字段。如果先前不设置buddy,请将调用这个函数的参数buddy设置为0。可以参考buddy()、setText()、QShortcut和setAlignment()。Qt的组件Qt-C++图形用户界面库 如果在一个对话框19Qt的组件Qt-C++图形用户界面库5.2.2QLCDNumberQLCDNumber的描述QLCDNumber窗口部件能够在LCD上面显示十进制、十六进制、八进制、二进制的数字。可以利用display()槽与数据源进行连接,能够重载五个任意类型的display()。如果您要显示一些超过显示范围的信息,您可以在QLCDNumber类中调用槽overflow(),来解决这个问题;如果您想改变LCD的显示范围,可以通过调用函数setNumDigits()来完成,但是setSmallDecimalPoint()函数同样也可以改变它;如果您想显示十六进制、八进制、二进制、十进制的数值,您就可以调用函数setHexMode()

、setOctMode()、setBinMode()、

setDecMode()来将其设置。Qt的组件Qt-C++图形用户界面库5.2.2QLCDN20Qt的组件Qt-C++图形用户界面库 QLCDNumber不但显示可以显示数字,而且还可以其他符号,例如:0/O、1、2、3、4、5/S、6、7、8、9/g、负数、小数、A、B、C、D、E、F、h、H、L、o、P、r、u、U、Y、冒号、温度符号和空格。QLCDNumber可以用空格代替非法字符。注意:虽然您能够通过value()来检索数值,但是QLCDNumber对象的内容不能够被检索。如果您真正地需要文本,我们建议您使用信号-槽的机制来实现,可以将display()槽连接到其他槽中,并且将其存放在那里。效果:

Qt的组件Qt-C++图形用户界面库 QLCDNumb21Qt的组件Qt-C++图形用户界面库QLCDNumber的成员QLCDNumber::QLCDNumber(QWidget*parent=0)构造一个LCDNumber。segmentStyle()函数用来设置其外观。parent参数,将传递给QFrame构造函数。也可以参考setNumDigits()和setSmallDecimalPoint()函数。QLCDNumber::QLCDNumber(uintnumDigits,QWidget

*parent=0)构造一个LCD数字。参数numDigits是用来设置数字的数量。segmentStyle()函数用来设置其外观。parent参数,将传递给QFrame构造函数。也可以参考setNumDigits()和setSmallDecimalPoint()函数。Qt的组件Qt-C++图形用户界面库QLC22Qt的组件Qt-C++图形用户界面库QLCDNumber::~QLCDNumber()销毁这个LCD数字。boolQLCDNumber::checkOverflow(doublenum)const如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint()。boolQLCDNumber::checkOverflow(intnum)const为了使用方便,将checkOverflow()函数进行了重载。如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint()。voidQLCDNumber::overflow()

[signal]当在LCD上显示太长的数字或者太长的字符串的时候,就可以发射overflow()信号。Qt的组件Qt-C++图形用户界面库QLCDNumber:23Qt的组件Qt-C++图形用户界面库QLCDNumber::~QLCDNumber()销毁这个LCD数字。boolQLCDNumber::checkOverflow(doublenum)const如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint()。boolQLCDNumber::checkOverflow(intnum)const为了使用方便,将checkOverflow()函数进行了重载。如果num太大了,以至于不能够全部显示,则返回为真;否则返回为假。也可以参考display(),numDigits()和smallDecimalPoint()。voidQLCDNumber::overflow()

[signal]当在LCD上显示太长的数字或者太长的字符串的时候,就可以发射overflow()信号。Qt的组件Qt-C++图形用户界面库QLCDNumber:24Qt的组件Qt-C++图形用户界面库5.3.组合框5.3.1组合框的描述QGroupBox窗口部件提供了一个有标题的组合框。 组合框提供了一个框架、一个标题和一个键盘快捷键,显示在它里面地其他不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子窗口部件,子窗口部件将会排列在这个框架中的一个数组中。 QGroupBox也可以自己设置标题(通常在构造函数中设置),利用alignment()函数来设置标题的对齐方式。Qt的组件Qt-C++图形用户界面库5.3.组合框25Qt的组件Qt-C++图形用户界面库5.3.2组合框的成员QGroupBox::QGroupBox(QWidget*parent=0)构造一个父窗体为parent,没有标题的组合框。QGroupBox::QGroupBox(constQString&title,QWidget

*parent=0)构造一个父窗体为parent,标题为title的组合框。QGroupBox::~QGroupBox()销毁这个组合框。voidQGroupBox::toggled(boolon)

[signal]如果组合框中有一个复选框(参考isCheckable()),如果您想切换复选框的时候,就要发射toggled()信号。如果选择了复选框,就为真;否则就为假。Qt的组件Qt-C++图形用户界面库5.3.2组合框的成26Qt的组件Qt-C++图形用户界面库效果:Qt的组件Qt-C++图形用户界面库效果:27Qt的组件Qt-C++图形用户界面库5.4滚动框和微调框5.4.1QSlider类QSlider类的描述QSlider窗口部件提供了水平的滚动条和垂直的滚动条。滚动条是一个典型的窗口部件,它能够控制数值的活动范围。它能够在指定的范围内让用户沿这水平或者垂直方向移动滚动条,并且能够将当前滚动条的位置返回为一个整数值。QSlider类具有一些自己的函数,大多数功能存放在QAbstractSlider类中。setValue()函数是非常有用的函数,它能够直接设置滚动条的一些值。triggerAction()函数能够模拟点击的效果(对快捷键非常有用)。如果您想设置移动的步数,可以使用setSingleStep(),setPageStep()函数。您需要自定义滚动条移动的范围的时候,可以使用setMinimum()和setMaximum()函数达到你的目的。Qt的组件Qt-C++图形用户界面库5.4滚动框和微调框28Qt的组件Qt-C++图形用户界面库QSlider类提供了控制移动标记的方式。如果您使用setTickPosition()函数来表明您要移动的位置。当您需要设置多少个间隔的时候,setTickInterval()函数能够实现。如果查询设置当前的移动位置和移动的间隔,tickPostition()和tickInterval()函数能够很好的完成。QSlider类提供了以下信号:valueChanged()当滚动条的值改变的时候,发射该信号。sliderPressed()当用户开始拖动滚动条的时候,发射该信号。sliderMoved()当用户开始移动滚动条的时候,发射该信号。sliderReleased()当用户释放滚动条的时候,发射该信号。QSlider仅仅提供了整数范围。注意:虽然QSlider能够处理比较大的数字,但是,在大致的范围内,用户使用滚动条得到精确的数字是非常困难的Qt的组件Qt-C++图形用户界面库QSlide29Qt的组件Qt-C++图形用户界面库QSlider类的成员QSlider::QSlider(QWidget*parent=0)构造一个参数为parent的垂直滚动条。QSlider::QSlider(Qt::Orientationorientation,QWidget*parent=0)构造一个参数为parent的滚动条。参数orientation取决于滚动条是水平的还是垂直的;Qt::Orientation的有效值为:垂直方向Qt::Vertical和水平方向Qt::Horizontal。QSlider::~QSlider()销毁这个滚动条。Qt的组件Qt-C++图形用户界面库QSl30Qt的组件Qt-C++图形用户界面库效果:Qt的组件Qt-C++图形用户界面库效果:31Qt的组件Qt-C++图形用户界面库5.4.2QSpinBox类QSpinBox类的描述

QSpinBox类提供了一个微调框的窗体。QSpinBox类是用来处理整数和设置离散集合的数值(例如:月份);利用QDoubleSpinBox可以处理浮点数值。QSpinBox允许用户点击向上/向下的按钮选择数值,或者点击键盘的向上/向下键去增加/减少当前显示的值,用户也可以手动输入数值。如果直接在微调框中输入数值,并且点击输入/返回的时候,微调框失去焦点的时候,或者微调框失效的时候,都会改变这个值,发送valueChanged()信号(参考QWidget::WindowActivationChanged())。微调框不但支持整数值,而且可以通过validate()、textFromValue()和valueFromText()来支持不同的字符串。Qt的组件Qt-C++图形用户界面库5.4.2QSpin32Qt的组件Qt-C++图形用户界面库无论在任何时候,只要微调框的值被改变,QSpinBox便会反射信号valueChanged()。利用value()函数和设置setValue()函数来获取当前的数值。如果您想点击向上/向下的按钮,或者使用键盘的向上/向下的方向键,来增加/减少当前的数值,利用singleStep()函数来设置每点击一次增加/减少的大小。如果您想改变这个功能,您可以利用虚函数stepBy()来重新实现。最大值、最小值和步长大小可以使用构造函数来设置,也可以通过函数setMininimum()、setMaximum()和setSingleStep()来设置。Qt的组件Qt-C++图形用户界面库无论在任何时33Qt的组件Qt-C++图形用户界面库 绝大多数微调框是有方向的,但是QSpinBox也可以像使用一个圆形的微调框一样。例如:如果您的微调框的范围是0到99,并且微调框当前的数值为99,wrapping()函数设置为真,您点击“向上”按钮,或者点击键盘向上的方向键,该微调框的数值就会变为0。如果你想改变微调框具有这样圆形的功能,您可以利用setWrapping()函数来实现。 微调框有一个特殊的功能是:可以在需要实现数字的中添加任意的符号。例如:货币或者测量单位,可以参考setPrefix()和setSuffix()函数。如果您要获得微调框的文本信息,您可以使用text()函数(它包括所有prefix()和suffix()),或者使用cleantext()函数(它没有prefix()和suffix(),并且在开头和结尾没有空白)。Qt的组件Qt-C++图形用户界面库 绝大多数微调框是有方34Qt的组件Qt-C++图形用户界面库QSpinBox类的成员QSpinBox::QSpinBox(QWidget*parent=0)构造一个参数为parent,最小数值为0,最大数值为99,步长为1的微调框。该微调框在开始的时候,通常情况设置为0。也可以参考setMinimum()、setMaximum()和setSingleStep()。voidQSpinBox::setRange(intmin,intmax)setRange(min,max)是一个方便设置微调框的最小值和最大值的函数。该函数等同于以下函数:setMinimum(min);setMaximum(max);Qt的组件Qt-C++图形用户界面库QSp35Qt的组件Qt-C++图形用户界面库QStringQSpinBox::textFromValue(intv)const

[virtualprotected]每当微调框需要显示数值v,就要使用虚函数textFromValue()。该函数在默认的情况下,返回的是一个包含有参数v的字符串。如果需要将其输出,可以利用QLocale().toString(v)函数,将其标准的打印出来。注意:QSpinBox不能调用specialValueText()函数,并且在返回值中既不包含prefix(),也不包含suffix()。如果你想重新实现这个功能,你也需要重新实现valueFromText()和validate()函数。voidQSpinBox::valueChanged(inti)

[signal]当微调框的数值改变的时候,就要发射valueChanged()信号。改变后的int类型的数值将要传递给参数i。Qt的组件Qt-C++图形用户界面库QStringQSp36Qt的组件Qt-C++图形用户界面库voidQSpinBox::valueChanged(constQString&text)

[signal]为了方便使用,将valueChanged()函数重载。改变后的值不需要通过prefix()和suffix()逐个传递给参数text。intQSpinBox::valueFromText(constQString&text)const

[virtualprotected]每当将text转换成用户需要的数值的时候,就要使用到valueFromText()虚函数。如果在非数字的方式下,想要显示微调框的子类的数值,就要重新实现该函数。注意:QSpinBox分开处理sepcialValueText();该函数与其他的数值有关。Qt的组件Qt-C++图形用户界面库voidQSpinB37Qt的组件Qt-C++图形用户界面库效果:Qt的组件Qt-C++图形用户界面库效果:38Qt的组件Qt-C++图形用户界面库5.5文本输入框5.5.1QLineEdit类的描述

QLineEdit窗体组件是一个单行文本编辑框。单行文本编辑框允许用户通过有用的编辑函数来输入和编辑单行纯文本,该编辑函数包括撤消和重做、剪切和粘贴、拖动和放下。 通过函数echoMode()来改变单行文本编辑框的属性,它也可以将文本编辑框改变为只读的状态,也可以将文本编辑框处于编辑密码的状态,这样可以使用户在输入信息的时候,在文本编辑框中无法显示输入的密码信息。 如果您想强制改变文本的长度,就可以使用maxLength()函数。也可以利用validator()或者inputMask()函数来任意的改变。Qt的组件Qt-C++图形用户界面库5.5文本输入框39Qt的组件Qt-C++图形用户界面库 您也可以利用setText()或者insert()函数来改变文本,利用text()函数来获取文本编辑框的信息,也可以利用displayText()函数获取文本显示的信息。文本的选择可以通过setSelection()或者selectAll()函数来设置,也可以通过cut()、copy()、paste()函数来选择。如果您想改变文本的排列方式,可以通过setAlignment()函数来改变。 当您改变文本的时候,就要发射textChanged()信号;当您改变文本信息以后,除了调用setText()函数,还要发射textEdited()信号;当您移动光标的时候,就要发射cursorPositionChanged()信号;当您点击返回或者进入键的时候,就要反射returnPressed()信号。 当编辑完成的时候,或者是文本编辑框失去焦点,或者是点击返回/进入的按键的时候,要发射editingFinshed()信号。Qt的组件Qt-C++图形用户界面库 您也可以利用setT40Qt的组件Qt-C++图形用户界面库 在默认的情况下,可以调用setFrame(false)函数,将窗口的主题风格等属性关闭。 可以根据以下信息绑定默认键。文本编辑框也提供了能够选择当前信息的上下文菜单(通常是请求鼠标右键的点击)键名动作LeftArrow向左移动将光标一个字符Shift+LeftArrow将选中文本向左移动一个字符RightArrow将光标向左移动一个字符Shift+RightArrow将选中文本向右移动一个字符Home将光标移动到行首End将光标称动到行尾Backspace删除一个字符,光标向左移动一个字符Ctrl+Backspace向左删除一个单词Delete删除光标右侧的一个字符Ctrl+Delete删除光标右侧的一个字符Ctrl+A将光标移动到行首Qt的组件Qt-C++图形用户界面库 在默认的情况下,可以41Qt的组件Qt-C++图形用户界面库键名动作Ctrl+B将光标向左移动一个字符Ctrl+C复制所选内容到剪贴板Ctrl+Insert复制所选内容到剪贴板Ctrl+D删除一个字符光标向右移.Ctrl+E移到光标到行尾Ctrl+F将光标向右移动一个字符Ctrl+H删除一个字符,光标向左移Ctrl+K删除到行尾Ctrl+V粘贴剪粘板的内容到光标处Shift+Insert粘贴剪粘板的内容到光标处Ctrl+X删除所选文本并复制到剪粘板Shift+Delete删除所选文本并复制到剪粘板Ctrl+Z取消上一次操作Ctrl+Y重做最后一次未完成的操作Qt的组件Qt-C++图形用户界面库键名动作Ctrl+B将42Qt的组件Qt-C++图形用户界面库5.5.2QLineEdit类的成员QLineEdit::QLineEdit(QWidget*parent=0)构造一个没有文本信息的单行文本编辑框。这个单行文本编辑框的最大长度是32767个字符。parent参数发送给QWidget构造函数。也可以参考setText()和setMaxLength()函数。QLineEdit::QLineEdit(constQString&contents,QWidget

*parent=0)构造一个文本内容为contents的单行文本信息框。这个单行文本编辑框的最大长度为32767个字符,光标在单行文本编辑框的末尾。parent参数发送给QWidget构造函数。也可以参考text()和setMaxLength()函数。Qt的组件Qt-C++图形用户界面库5.5.2QLine43Qt的组件Qt-C++图形用户界面库QLineEdit::~QLineEdit()销毁单行文本编辑框。voidQLineEdit::backspace()如果没有选择文本,删除文本光标左边的字符,并且移动到光标的左边位置。如果选择文本,光标就会移动到被选择文本的起点,并且删除选择的文本。也可以参考del()函数。voidQLineEdit::clear()

[slot]清除单行文本编辑框的内容。也可以参考setText()和insert()函数。Qt的组件Qt-C++图形用户界面库QLineEdit::44Qt的组件Qt-C++图形用户界面库voidQLineEdit::contextMenuEvent(QContextMenuEvent*event)显示利用createStandardContextMenu()函数创建的上下文菜单。如果您不需要在单行文本编辑框中有一个上下文菜单,您可以将它的contextMenuPolicy设置为Qt::NoContextMenu。如果您想自定义上下文菜单,您可以将这个函数重新编写,实现新的功能。如果你想扩展你的标准上下文菜单,就要调用createStandardContextMenu()函数来重新编写contextMenuEvent()函数,扩展返回的菜单。voidLineEdit::contextMenuEvent(QContextMenuEvent*event){ QMenu*menu=createStandardContextMenu(); menu->addAction(tr("MyMenuItem")); //...menu->exec(event->globalPos()); deletemenu;}当这个事件发生的时候,event参数用来获鼠标的光标位置。也可以参考setContextMenuPolicy()函数。Qt的组件Qt-C++图形用户界面库voidQLineE45Qt的组件Qt-C++图形用户界面库voidQLineEdit::copy()const

[slot]在echoMode()为Normal的情况下,复制选择的文本到剪贴板。也可以参考cut()和paste()函数。QMenu*QLineEdit::createStandardContextMenu()该函数是在用户用鼠标右键点击单行文本编辑框的时候,创造能够显示标准上下文菜单。在默认的情况下,调用contextMenuEvent()函数来处理。弹出一个菜单,将菜单的信息传递给访问者。voidQLineEdit::cut()

[slot]在echoMode()为Normal的情况下,将选择的文本信息复制到剪切板中,并且删除选择的文本信息。也可以参考copy()、paste()和setValidator()函数。Qt的组件Qt-C++图形用户界面库voidQLineE46Qt的组件Qt-C++图形用户界面库voidQLineEdit::del()如果没有选择文本,删除文本光标右边的字符。如果选择文本,光标移动到选择文本的起点,并且删除选择的文本。voidQLineEdit::deselect()取消选择的所有的文本信息。也可以参考setSelection()和selectAll()函数。voidQLineEdit::end(boolmark)移动文本光标到文本编辑框的末端,除非它已经在那里。如果mark为真,被选择的文本向最后位置移动;否则,如果移动光标,需要选择的文本不能够被选择。也可以参考home()函数。Qt的组件Qt-C++图形用户界面库voidQLineE47Qt的组件Qt-C++图形用户界面库voidQLineEdit::home(boolmark)移动文本光标到文本编辑框的起点,除非它已经在那里。如果mark为真,被选择的文本向第一个位置移动;否则,如果移动光标,需要选择的文本不能够被选择。也可以参考end()函数。voidQLineEdit::insert(constQString&newText)删除所有选择的文本,插入newText文本,并且验证结果。如果是合法的,可以在文本编辑框中新建内容。也可以参考setText()和clear()函数。Qt的组件Qt-C++图形用户界面库voidQLineE48Qt的组件Qt-C++图形用户界面库voidQLineEdit::paste()

[slot]在文本编辑框不是只读的情况下,在当前位置插入剪切板里的文本,删除任何选择的文本。如果最终的结果,没有接受当前的验证,什么事情也不会发生。也可以参考copy()和cut()。voidQLineEdit::redo()

[slot]在能够恢复的情况下,恢复最后一次的操作。voidQLineEdit::undo()

[slot]在撤消可以使用的情况下,撤消最后的操作。取消当前所有的选择,并且在当前光标开始的位置更新选择。Qt的组件Qt-C++图形用户界面库voidQLineE49Qt的组件Qt-C++图形用户界面库效果:Qt的组件Qt-C++图形用户界面库效果:50Qt的组件Qt-C++图形用户界面库5.6菜单和工具栏5.6.1菜单菜单的描述

QMenu类提供了一个菜单窗体组件,该组件用于菜单栏、上下文菜单和弹出式菜单。 菜单窗体组件能够选择菜单,在菜单栏中可以有一个下拉菜单,或者有一个独立的上下文菜单。当用户点击下拉菜单的各自选项,或者使用指定的快捷键时候,就会显示菜单栏中的下拉菜单。使用QMenuBar::addMenu()函数将菜单添加到菜单栏中。上下文菜单通常是由某一个专门的键盘按键,或者通过使用点击鼠标右键来实现的。想要实现上下文菜单,就要执行popup()函数,或者exec()函数。Qt的组件Qt-C++图形用户界面库5.6菜单和工具栏51Qt的组件Qt-C++图形用户界面库 菜单由一个选项列表组成,使用addAction()函数将选项添加到选项列表中。另外,选项也可以有文本标签,在文本标签的左边可以任意添加图标,也可以给选项添加快捷键,例如“Ctrl+X”。 如果想将每个选项分隔开来,那应该如何去做呢?可以使用分割符。分隔符显示一个子菜单的选项,并且可以在选项中执行某个操作。如果您想插入一个分隔符,可以利用函数addSeparator()来实现。如果想添加子菜单,可以利用addMenu()函数来实现。 当你插入一个选项的时候,您通常要指定接收者和槽。当选项发出信号triggered()的时候,要告诉接收者。另外,QMenu提供了activated()和highlighted()两个信号,该两个信号是点击菜单中的QAction时候使用的。 如果您想清除菜单的时候,可以使用clear()函数来实现;如果您想移动个别的菜单选项,可以使用removeAction()函数来实现。Qt的组件Qt-C++图形用户界面库 菜单由一个选项列表组52Qt的组件Qt-C++图形用户界面库菜单的成员QMenu::QMenu(QWidget*parent=0)构造一个父窗体为parent的菜单。虽然弹出式菜单总是一个顶层的窗体,当父窗体被删除的时候,这个弹出式也跟着被删除。QMenu::QMenu(constQString&title,QWidget*parent=0)构造一个标题为title,窗体为parent的菜单。虽然弹出式菜单总是一个顶层的窗体,当父窗体被删除的时候,这个弹出式也跟着被删除。QMenu::~QMenu()该函数用来销毁这个菜单。Qt的组件Qt-C++图形用户界面库菜单的53Qt的组件Qt-C++图形用户界面库QAction*QMenu::addAction(constQString&text)该函数是用来创建一个新的选项text,将新创建的选项添加到选项列表中,并且将其返回。QAction*QMenu::addMenu(QMenu*menu)该函数是将menu添加到子菜单中去,它返回的是menuAction()函数。QAction*QMenu::addSeparator()该函数是创建一个选项分隔符,将其添加到菜单选项列表中。它返回的是创建新的选项。voidQMenu::clear()该函数是用来清除所有的菜单选项。在其他拥有该菜单的窗体中,不显示被删除的选项。Qt的组件Qt-C++图形用户界面库QAction*Q54Qt的组件Qt-C++图形用户界面库voidQMenu::setDefaultAction(QAction*act)该函数是用来设置默认的菜单选项act。voidQMenu::triggered(QAction*action)

[signal]当菜单的act选项被点击的时候,就要发射信号triggered()。Qt的组件Qt-C++图形用户界面库voidQMenu:55Qt的组件Qt-C++图形用户界面库5.6.2工具栏工具栏的描述 QToolBar类提供了包含控制集合的可移动的面板。 工具栏中的按钮是利用addAction()或者insertAction()函数,将选项添加到工具栏中来实现的。可以利用addSeparator()或者insertSeparator()函数,将按钮组分隔开。如果认为工具栏的按钮不合适,利用函数addWidget()或者insertWidget()插入一个窗体,来代替这个工具栏中的按钮,QSpinBox、QDoubleSpinBox和QComboBox就是一个很合适的窗体例子。当点击工具栏按钮的时候,就要发射actionTriggered()信号。 工具栏固定在一个特殊的区域中(例如:在窗体的顶部),或者利用isMoveable()函数将工具栏在它的区域内移动。也可以参考allowedAreas()和isAreaAllowed()函数。Qt的组件Qt-C++图形用户界面库5.6.2工具栏56Qt的组件Qt-C++图形用户界面库 如果主窗体要重新定义大小,这样工具栏所占有的区域会变小,以至于不能够正常显示所有的窗口组件,这时就一个带有箭头的按钮(该按钮看起来像一个“>>”符号)将会根据工具栏的方向,显示在工具栏的右面或者下面。点击这个按钮的时候,就会弹出一个菜单,该菜单用来显示那些没有全部显示的其他选项。Qt的组件Qt-C++图形用户界面库 如果主窗体要重新定义57Qt的组件Qt-C++图形用户界面库工具栏的成员QToolBar::QToolBar(constQString&title,QWidget*parent=0)构造一个参数为parent的工具栏。将这个窗口的标题设置为title。当工具栏作为一个独立的窗体的时候,就要使用这个标题。它在QMainWindow提供的上下文菜单中,也能够正常显示。也可以参考setWindowTitle()函数。QToolBar::QToolBar(QWidget*parent=0)构造一个参数为parent的工具栏。QToolBar::~QToolBar()销毁这个工具栏。Qt的组件Qt-C++图形用户界面库工具栏58Qt的组件Qt-C++图形用户界面库QAction*QToolBar::addAction(constQString&text)创建一个文本信息为text的选项,将该选项添加到工具栏的末尾。QAction*QToolBar::addAction(constQIcon&icon,constQString&text)这是一个重载的addAction()函数。该函数是用来创建一个文本信息为text,图标为icon的选项,将该选项添加到工具栏的末尾。QAction*QToolBar::addSeparator()该函数是用来在工具栏的末尾添加一个分隔符。也可以参考insertSeparator()函数。Qt的组件Qt-C++图形用户界面库QAction*Q59Qt的组件Qt-C++图形用户界面库QAction*QToolBar::addWidget(QWidget*widget)将参数为widget的窗体添加到工具栏中,将其作为工具栏的最后一个选项。注意:您应该使用QAction::setVisible()函数来改变窗体的可见性。不使用QWidget::setVisible()、QWidget::show()和QWidget::hide()函数。也可以参考insertWidget()函数。voidQToolBar::clear()该函数使用来清除工具栏中所有选项。也可以参考removeAction()函数。QAction*QToolBar::insertSeparator(QAction*before)在工具栏的前面插入一个分隔符,这个工具栏选项与before选项有关。也可以参考addSeparator()函数。Qt的组件Qt-C++图形用户界面库60Qt的组件Qt-C++图形用户界面库QAction*QToolBar::insertWidget(QAction*before,QWidget*widget)在工具栏的前面插入一个widget,这个工具栏选项与before选项有关。注意:您应该使用QAction::setVisible()函数来改变窗体的可见性。不使用QWidget::setVisible()、QWidget::show()和QWidget::hide()函数。也可以参考addWidget()函数。Qt的组件Qt-C++图形用户界面库QAction*Q61Qt的组件Qt-C++图形用户界面库5.6.3状态栏状态栏的描述QStatusBar类提供了一个能够显示当前状态信息的水平栏。每个状态指示器都会出现在以下三种类别中:临时的暂时地占用状态栏的大部分空间。例如,用于解释工具提示文本或者菜单条目。正常的占用状态栏的一部分空间,也可能隐藏临时的信息。例如:用于在字处理器中显示页数和行数。永久的永远不会隐藏,用于重要的模式提示。例如:一些程序大小写指示器放在状态栏中。Qt的组件Qt-C++图形用户界面库5.6.3状态栏62Qt的组件Qt-C++图形用户界面库QStatusBar让您能够显示上述所有类型的指示信息。在通常情况下,如果要获得状态栏的某些功能,那么就要创建QMainWindow的对象。QMainWindow提供了一个主要的应用程序窗口,与菜单栏、工具栏、一个大的中央窗口部件(例如文本编辑或者绘制画布)和状态栏。如果您想获得状态栏的信息,可以使用QMainWindow::statusBar()函数;如果您想改变状态栏的信息,可以使用QMainWindow::setStatusBar()函数。使用槽showMessage(),能够显示临时的信息。例如:voidMainWindow::createStatusBar(){statusBar()->showMessage(tr("Ready"));}Qt的组件Qt-C++图形用户界面库QStatusBar让63Qt的组件Qt-C++图形用户界面库如果你想清除临时信息,你可以使用槽clearMessage(),或者当调用showMessage()函数的时候,设置显示的时间。例如:voidMainWindow::print(){QTextDocument*document=textEdit->document();QPrinterprinter;QPrintDialog*dialog=newQPrintDialog(&printer,this);if(dialog->exec()!=QDialog::Accepted){return; } document->print(&printer); statusBar()->showMessage(tr("Ready"),2000);l}Qt的组件Qt-C++图形用户界面库如果你想清除临时信息,64Qt的组件Qt-C++图形用户界面库 使用currentMessage()函数,能够显示当前状态栏获得的临时信息。QStatusBar也提供了messageChanged()信号,当临时的状态栏信息改变的时候,就要发射这个信号。 要想显示正常和永久的信息,就要通过创建一个小窗体(QLabel、QProgressBar或者QToolButton),然后使用addWidget()函数将这个窗体添加到状态栏中,或者使用addPermanentWidget()函数来实现。使用removeWidget()函数,将状态栏中的窗体部件清除。如何添加窗体呢?请按照以下方法去做。statusBar()->addWidget(newMyReadWriteIndication(statusBar()));在默认的情况下,QStatusBar在右下角提供了一个QSizeGrip。您可以使用setSizeGripEnabled(FALSE)函数,将其失效。Qt的组件Qt-C++图形用户界面库 使用currentM65Qt的组件Qt-C++图形用户界面库状态栏的成员QStatusBar::QStatusBar(QWidget*parent=0)构造一个父对象为parent的工具栏。QStatusBar::~QStatusBar()

[virtual]销毁这个状态栏,并且释放所有已经分配的资源和子窗口部件。voidQStatusBar::clearMessage()

[slot]清除现在显示的任何临时的信息。也可以参考currentMessage(),showMessage()和removeWidget()函数。QStringQStatusBar::currentMessage()const返回的是显示当前临时的信息。如果没有任何信息,返回的是一个空的字符串。Qt的组件Qt-C++图形用户界面库状态栏66Qt的组件Qt-C++图形用户界面库voidQStatusBar::hideOrShow()

确保右面的窗体是可看见的。可以使用showMessage()和clearMessage()函数。voidQStatusBar::removeWidget(QWidget*widget)清除工具栏中指定的widget窗体。也可以参考addWidget()、addPermanentWidget()和clearMessage()函数。voidQStatusBar::showMessage(constQString&message,inttimeout=0)

[slot]隐藏正常状态指示器,并且显示message信息timeout毫秒,或者直到调用clearMessage()函数,或者调用showMessage()函数。也可以参考messageChanged()、currentMessage()和clearMessage()。Qt的组件Qt-C++图形用户界面库voidQStatu67Qt的组件Qt-C++图形用户界面库效果:Qt的组件Qt-C++图形用户界面库效果:68Qt的组件Qt-C++图形用户界面库5.1按钮5.1.1推动按钮推动按钮的描述

推动或者命令按钮是任何GUI(图形用户界面)中最常用的窗口部件,它来命令计算机执行一些操作,或者回答一个问题。典型的按钮有确定(OK)、应用(Apply)、撤消(Cancel)、关闭(Close)、是(Yes)、否(No)和帮助(Help)等。

该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。标签中有下划线的字母(在此它的前面用“&”标明)表明快捷键,比如:QPushButton*pushbutton=newQPushButton("&Help",this); 这个实例中快捷键是Alt+H,并且文本标签将被显示为Help。Qt的组件Qt-C++图形用户界面库5.1按钮69Qt的组件Qt-C++图形用户界面库推动按钮的成员QPushButton(QWidget*parent=0)构造一个没有文本的推动按钮,参数为parent。QPushButton(constQString&text,QWidget*parent=0)构造一个父对象为parent、文本为text的推动按钮。QPushButton(constQIcon&icon,constQString&text,QWidget*parent=0)构造一个图标为icon、文本为text、父对象为parent的推动按钮。注意:您可以传递一个QPixmap作为一个图标(感谢由C++提供的隐含类型转换)。Qt的组件Qt-C++图形用户界面库推动按70Qt的组件Qt-C++图形用户界面库QPushButton()销毁这个推动按钮。voidQButton::setText(constQString&)设置这个按钮上显示的文本。voidQButton::pressed()当这个按钮被按下的时候,将要发射该信号。voidQPushButton::setMenu(QMenu*menu)这个按钮与弹出式的菜单menu联系在一起。这样就可以把一个普通的按钮变成菜单按钮,在该按钮的文本的右边会出现一个倒置的小三角。Qt的组件Qt-C++图形用户界面库QPushButton71Qt的组件Qt-C++图形用户界面库推动按钮的实例 该实例的功能,当您按下退出按钮的时候,就会退出系统。以下是该实例的代码:/*main.cpp*/#include<qapplication.h>//当窗口初始化的时候,引用的头文件#include<qpushbutton.h>//定义QPushButton对象,引用的头文件#include<qobject.h>//需要使用connect函数,引用的头文件intmain(intargc,char**argv){QApplicationapp(argc,argv);//窗体初始化QPushButton*pushbutton=newQPushButton("Quit");QObject::connect(pushbutton,SIGNAL(clicked()),pushbutton,SLOT(close()));pushbutton->show();//显示该窗体returnapp.exec();}Qt的组件Qt-C++图形用户界面库推动按72Qt的组件Qt-C++图形用户界面库推动按钮的实例 该实例的功能,当您按下退出按钮的时候,就会退出系统。以下是该实例的代码:/*main.cpp*/#include<qapplication.h>//当窗口初始化的时候,引用的头文件#include<qpushbutton.h>//定义QPushButton对象,引用的头文件#include<qobject.h>//需要使用connect函数,引用的头文件intmain(intargc,char**argv){QApplicationapp(argc,argv);//窗体初始化QPushButton*pushbutton=newQPushButton("Quit");QObject::connect(pushbutton,SIGNAL(clicked()),pushbutton,SLOT(close()));pushbutton->show();//显示该窗体returnapp.exec();}运行该实例的结果,如图所示:Qt的组件Qt-C++图形用户界面库推动按73Qt的组件Qt-C++图形用户界面库5.1.2单选按钮单选按钮的描述 QRadioButton窗口部件为单选按钮提供了一个文本标签。 QRadioButton是一个能够切换开(选择)或者关(没有选择)的选择按钮。通常单选按钮是用于当前用户选择许多中的一个选项。在同一时刻,单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前选择的按钮将要切换为关闭状态。 当一个按钮切换开或者关的时候,它就会发射toggled()信号。如果任何时刻你想触发一个行为来改变按钮的状态的时候,可以连接这个信号。否则,使用isChecked()来查看是否有其他按钮被选择。像上述的QPushButton一样,单选按钮能够显示文本和可选择的小图标。文本能够在构造函数中被设置,或者使用setText()函数;设置图标可以使用setIcon()函数来设置。Qt的组件Qt-C++图形用户界面库5.1.2单选按钮74Qt的组件Qt-C++图形用户界面库单选按钮的成员QRadioButton::QRadioButton(QWidget*parent=0)构造一个单选按钮的窗口组件,但是该组件没有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论