第三章 窗口部件

您所在的位置:网站首页 qt创建窗口常用的部件 第三章 窗口部件

第三章 窗口部件

2024-02-02 12:27| 来源: 网络整理| 查看: 265

类继承关系 请添加图片描述

第一节 基础窗口部件QWidget 1.窗口部件QWidget

QWidget类是所有用户界面对象的基类,被称为基础窗口部件。 QWidget继承自QObject类和QPaintDevice类,其中QObject类是所有支持Qt对象模型(Qt Object Model)的Qt对象的的基类,QPaintDevice类是所有可以绘制的对象的基类。

2.窗口、子部件以及窗口类型 (1)窗口

把没有嵌入到其他部件中的部件称为窗口,一般的,窗口都有边框和标题栏。

QWidget *widget = new QWidget(); // 新建QWidget类对象,默认parent参数是0,所以它是个窗口 QLabel *label = new QLabel(); // 新建QLabel对象,默认parent参数是0,所以它是个窗口 QLabel *label2 = new QLabel(widget); // label2指定了父窗口为widget,所以不是窗口 (2)子部件

QMainWindow和大量的QDialog子类是最一般的窗口类型。窗口就是没有父部件的部件,所以又称为顶级部件(top-level widget)。 与其相对的是非窗口部件,又称为子部件(child widget)。

(3)窗口类型

QWidget的构造函数有两个参数:QWidget * parent = 0和Qt::WindowFlags f = 0; 前面的parent就是指父窗口部件,默认值为0,表明没有父窗口; 后面的f参数是Qt::WindowFlags类型的,它是一个枚举类型,分为窗口类型(WindowType)和窗口标志(WindowFlags)。 前者可以定义窗口的类型,比如我们这里f=0,表明使用了Qt::Widget一项,这是QWidget的默认类型,这种类型的部件如果有父窗口,那么它就是子部件,否则就是独立的窗口。 当更改窗口类型后,窗口的样式会发生改变,

QWidget *widget = new QWidget(0, Qt::Dialog); //对话框类型 QLabel *label = new QLabel(0, Qt::SplashScreen); //欢迎窗口类型

而对于窗口标志,它主要的作用是更改窗口的标题栏和边框,而且它们可以和窗口类型进行位或操作。

QWidget *widget = new QWidget(0, Qt::Dialog | Qt::FramelessWindowHint); //用来产生一个没有边框的窗口 QLabel *label = new QLabel(0, Qt::SplashScreen | Qt::WindowStaysOnTopHint); //用来使该窗口停留在所有其它窗口上面 3.窗口的集几何布局

对于窗口的大小和位置,根据是否包含边框和标题栏两种情况,要用不同的函数来获取它们的数值。 这里的函数分为两类,一类是包含框架的,一类是不包含框架的:

包含框架: x():返回部件的位置坐标的x值 y():返回部件的位置坐标的y值 frameGeometry():返回包含边框的窗口框架矩形的值,其返回值是QRect类型的,它的形式是(位置坐标,大小信息),也就是(x,y,宽,高) pos():返回窗口的位置 move():设置窗口位置 不包含框架: geometry():返回没有边框的窗口框架矩形的值,其返回值是QRect类型的,它的形式是(位置坐标,大小信息),也就是(x,y,宽,高) width():返回窗口内部的宽 height():返回窗口内部的高 rect():返回不包含边框的窗口内部矩形 size():返回不包含边框的窗口大小信息 resize():设置不包含边框的窗口大小

补充:qDebug()函数 两种输出方式:

方式一:直接将字符串当做参数传给qDebug()函数 如: qDebug("x: %d", x); // 输出x的值 方式二:使用输出流的方式一次输出多个值,它们的类型可以不同, 如:qDebug() //QColor color = QColorDialog::getColor(Qt::red, this, tr("颜色对话框"), QColorDialog::ShowAlphaChannel); QColorDialog dialog(Qt::red, this); // 创建对象 dialog.setOption(QColorDialog::ShowAlphaChannel); // 显示alpha选项 dialog.exec(); // 以模态方式运行对话框 QColor color = dialog.currentColor(); // 获取当前颜色 qDebug() // ok用于标记是否按下了“OK”按钮 bool ok; QFont font = QFontDialog::getFont(&ok, this); // 如果按下“OK”按钮,那么让“字体对话框”按钮使用新字体 // 如果按下“Cancel”按钮,那么输出信息 if (ok) ui->pushButton_3->setFont(font); else qDebug() // 问题对话框 int ret1 = QMessageBox::question(this, tr("问题对话框"),tr("你了解Qt吗?"), QMessageBox::Yes, QMessageBox::No); if(ret1 == QMessageBox::Yes) qDebug() // 演示复制进度 dialog.setValue(i); // 设置进度条的当前值 QCoreApplication::processEvents(); // 避免界面冻结 if(dialog.wasCanceled()) break; // 按下取消按钮则中断 } dialog.setValue(50000); // 这样才能显示100%,因为for循环中少加了一个数 qDebug() QWizardPage *page = new QWizardPage; page->setTitle(tr("介绍")); return page; } QWizardPage * MyWidget::createPage2() // 向导页面2 { QWizardPage *page = new QWizardPage; page->setTitle(tr("用户选择信息")); return page; } QWizardPage * MyWidget::createPage3() // 向导页面3 { QWizardPage *page = new QWizardPage; page->setTitle(tr("结束")); return page; } //向导对话框 void MyWidget::on_pushButton_8_clicked() { QWizard wizard(this); wizard.setWindowTitle(tr("向导对话框")); wizard.addPage(createPage1()); // 添加向导页面 wizard.addPage(createPage2()); wizard.addPage(createPage3()); wizard.exec(); } 三、窗口部件 1.QFrame类族

QFrame类是带有边框的部件的基类。它的子类有我们最为常用的标签部件QLabel,另外还有QLCDNumber、QSplitter、QStackedWidget、QToolBox和QAbstractScrollArea类。 带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame类的主要功能也就是用来实现不同的边框效果,这主要是由边框形状(Shape)和边框阴影(Shadow)组合来形成的。 AFrame类:

●共有类型 enum Shadow { Plain, Raised, Sunken } enum Shape { NoFrame, Box, Panel, StyledPanel, ..., WinPanel } enum StyleMask { Shadow_Mask, Shape_Mask } ●属性 frameRect : QRect//控件矩形 frameWidth : const int//框架的宽度 frameShadow : Shadow//有无阴影 lineWidth : int//线宽度 frameShape : Shape//框架形状 midLineWidth : int//中间线的宽度 ●公有函数 QFrame(QWidget * parent = 0, Qt::WindowFlags f = 0)//构造函数,设置主窗口和框架类型 ~QFrame()//析构函数 QRect frameRect() const//返回 框架的rect Shadow frameShadow() const Shape frameShape() const int QFrame::frameStyle() const//返回框架风格,类似frameShadow() int frameWidth() const int lineWidth() const int midLineWidth() const void setFrameRect(const QRect &) void setFrameShadow(Shadow) void setFrameShape(Shape) void setFrameStyle(int style) void setLineWidth(int) void setMidLineWidth(int) ●重写公有函数 virtual QSize sizeHint() const//返回尺寸大小 ●保护函数 void initStyleOption(QStyleOptionFrame * option) const//初始化画一个框架 ●公有保护函数 virtual void changeEvent(QEvent * ev)//事件状态改变 virtual bool event(QEvent * e)//接收事件 virtual void paintEvent(QPaintEvent *)//重绘事件 2.按钮部件

QAbstractButton类是按钮部件的抽象基类,提供了按钮的通用功能。它的子类包括:

①复选框QCheckBox ●QCheckBox组件简介 QCheckBox复选框,复选框提供多选多。 QCheckBox有三种状态:checked、unchecked和PartiallyChecked。 ●QCheckBox组件属性 QCheckBox复选框属性设置选项: A、name:组件对应源代码中所显示的名字。 B、text:组件对应图形界面中所显示的名字。 C、font:设置text字体。 D、enabled:组件是否可用,可用为true,不可用为false。 E、checked:用来设置或返回是否选中单选按钮,选中为true,未选中为false。 ●QCheckBox组件常用成员函数 QCheckBox::QCheckBox(const QString &text,QWidget *parent,const char *name = 0)//构造一个名称为name、父对象为parent并且文本为text的复选框。 bool QCheckBox::isChecked()const //选中复选框,返回true,否则返回false。 void QAbstractButton ::setText(const QString &) //设置组件上显示的文本。 QString QAbstractButton ::text()const //返回组件上显示的文本。 void QAbstractButton ::stateChange(int state)[signal] //当更改checked属性时,将发射这个信号。 void QCheckBox::setChecked(bool check)[slot] //设置复选框是否选中,状态为check的值。 ②标准按钮QPushButton ●QPushButton组件简介 QPushButton组件用于接受用户点击事件,能够显示提示字符串,是功能性组件,需要父组件作为容器,能够在父组件中进行定位,用于执行命令或触发事件。 QPushButton的类继承如下: QPushButton :public QAbstractButton :pubic QWidget :public QObject, public QPaintDevice ●QPushButton组件属性 QPushButton 组件属性设置选项: A、name:组件对应源代码中的名字。 B、text:组件对应图形界面中显示的名字。 C、font:设置text的字体。 D、enabled:组件是否可用。 ●QPushButton组件常用成员函数 QPushButton::QPushButton(const QString &text,QWidget *parent,const char *name = 0); //构造一个名称为name,父对象为parent并且文本为text的按压按钮。 void QAbstractButton::setText(const QString &) //设置按钮上显示的文本。 QString QAbstractButton::text()const //返回按钮上显示的文本。 void QAbstractButton::pressed()[signal] //当按下按钮时,发射信号。 void QAbstractButton::clicked()[signal] //当单击按钮时,发射信号。 void QAbstractButton::released()[signal] //当释放按钮时,发射信号。 ●QPushButton实例 QPushButton *button = new QPushButton("OK", this); connect(button, SIGNAL(clicked()), this, SLOT(onOK())); ③单选框按钮QRadioButton ●QRaidoButton组件简介 QRaidoButton单选按钮,用于提供两个或多个互斥选项。 ●QRaidoButton组件属性 QRaidoButton单选按钮属性设置选项: A、name:组件对应源代码中所显示的名字。 B、text:组件对应图形界面中所显示的名字。 C、font:设置text字体。 D、enabled:组件是否可用,可用为true,不可用为false。 E、checked:用来设置或返回是否选中单选按钮,选中为true,未选中为false。 ●QRaidoButton组件常用成员函数 QRaidoButton::QRadioButton(const QString &text,QWidget *parent,const char *name = 0)//构造一个名称为name、父对象为parent并且文本为text的单选按钮。 bool QRadioButton::isChecked()const //返回是否选中单选按钮,选中时返回true,没有选中时返回false。 void QAbstractButton ::setText(const QString &) //设置组件上显示的文本。 QString QAbstractButton ::text()const //返回该按钮上显示的文本。 void QAbstractButton ::stateChanged(int state)[signal] //当更改checked属性值时,将发射信号。 void QRadioButton::setChecked(bool check)[virtual slot] //设置单选按钮是否被选中为checked。 ④工具按钮QToolButton ●QToolButton组件简介 QToolButton工具按钮,是一种用于命令或者选项的可以快速访问的按钮,通常在ToolBar里面。工具按钮通常显示的是图标,而不是文本标签。 ToolButton支持自动浮起。在自动浮起模式中,按钮只有在鼠标指向它的时候才绘制三维的框架。 ●QToolButton组件属性 QToolButton工具按钮设置选项: A、name:组件对应源代码中的名称。 B、text:工具按钮标签文本。 C、font:设置工具按钮标签的字体。 D、autoRaise:自动浮起是否生效。 E、iconSet:提供显示在按钮上的图标的图标集。 F、on:工具按钮是否为开。 G、textLabel:工具按钮自动提示文本。 H、usesTextLabel:自动提示文本textLabel是否工作,默认为false。 ●QToolButton组件常用成员函数 QToolButton::QToolButton(QWidget *parent,const char *name = 0) //构造一个名字为name,父对象为parent的ToolButton。 QToolButton::QToolButton(const QIconset &iconSet,const QString &textLabel, const QString &grouptext,QObject *receiver,const char *slot,QToolBar *parent,const char *name = 0) //构造一个名称为name,父对象为parent(必须为QToolBar)的工具按钮。工具按钮将显示iconSet,工具提示为textLabel, //状态条信息为grouptext,同时会将工具按钮链接到receiver对象的槽函数。 QToolBButton::QToolButton(ArrowType type,QWidget *parent,const char *name = 0) //把工具按钮构造成箭头按钮,type定义了箭头的方向,可用的值有LeftArrow、RightArrow、UpArrow、DownArrow。 void QToolButton::setAutoRaise(bool enable) //根据参数enable值设置按钮是否可自动浮起。 void QToolButton::setIcon(const QIconSet &) //设置显示在工具按钮上的图标。 void QToolButton::setOn(bool enable)[virtual slot] //设置按钮是否为开,enable等于true则设置为开,否则设置为关。 void QToolButton::setTextLabel(const QString &)[slot] //设置按钮的提示标签。 QString QToolButton::textLabel()const //返回按钮的提示标签。 void setToolButtonStyle( Qt::ToolButtonStyle style ) //设置ToolButton的样式,有下列样式: Qt::ToolButtonIconOnly只显示图标 Qt::ToolButtonTextOnly只显示文字 Qt::ToolButtonTextBesideIcon文字显示在图标旁 Qt::ToolButtonTextUnderIcon文字显示在图标下 Qt::ToolButtonFollowStyle根据QStyle::StyleHint进行设置 void setPopupMode( ToolButtonPopupMode mode ) //设置ToolButton的菜单弹出方式ToolButtonPopupMode,弹出方式如下:QToolButton::DelayedPopup延迟弹出 QToolButton::MenuButtonPopup菜单弹出 QToolButton::InstantPopup点击立即弹出 3.行编辑器

行编辑器QLineEdit部件是一个单行的文本编辑器,它允许用户输入和编辑单行的纯文本内容,而且提供了一系列有用的功能, 包括撤销与恢复、剪切和拖放等操作。如: 显示模式

Normal:正常显示 NoEcho:不显示任何输入 PassWord:密码样式,以黑点代替显示 PasswordEchoOnEdit:编辑时正常,其余以密码样式显示

输入掩码 目的:限制输入的内容,可使用一些特殊字符设置输入的格式和内容 掩码字符: 请添加图片描述

输入验证

在cpp文件中添加 QValidator * validator = new QIntValidator(100,999,this); //输入限制为100 ~ 999 ui -> lineEdit -> setValidator(validator);

自动补全

在类的构造函数中添加 QStringList wordlist; wordlist


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3