QT开发及实例学习之六控件


一、按钮组(Buttons)

按钮组各个按钮名称:

  • Push Button:按钮
  • Tool Button:工具按钮
  • Radio Button:单选按钮
  • Check Button:复选框
  • Command Link Button:命令链接按钮
  • Dialog Button Box:对话框按钮盒

二、输入部件组(Input Widgets)

输入部件组各个部件名称:

  • Combo Box:组合框
  • Font Combo Box:字体组合框
  • Line Edit:行编辑框
  • Text Edit:文本编辑框
  • Plain Text Edit:纯文本编辑框
  • Spin Box:数字显示框(自旋盒)
  • Double Spin Box:双自旋盒
  • Time Edit:时间编辑
  • Date Edit:日期编辑
  • Date/Time Edit:日期/时间编辑
  • Dial:拨号
  • Horizontal Scroll Bar:横向滚动条
  • Vertical Scroll Bar:垂直滚动条
  • Horizontal Slider:横向滑块
  • Vertical Slider:垂直滑块
  • Key Sequence Edit:按键序列编辑框

1.QDateTime类

  Date/Time Edit 对应于 QDateTime类,用来获取系统时间。
  通过QDateTime::currentDateTime()来获取本地系统的时间和日期信息;可以通过date()和time()来返回datetime中的日期和时间部分。

2.QTimer类

使用步骤:
(1)新建一个定时器;

QTimer *time_clock=new QTimer(parent);

(2)连接这个定时器的信号和槽,利用定时器的timeout();

connect(time_clock, SIGNAL(timeout()), this, SLOT(slottimedone()));

(3)开启定时器,并设定定时周期。
两种方式:

start(int time);		//每隔time秒重启定时器,利用stop()关闭定时器
setSingleShot(true);	//仅启动定时器一次

三、显示控件组(Display Widgets)

显示控件组各个控件名称:

  • Lable:标签
  • Text Browser:文本浏览器
  • Graphics View:图形视图
  • Calendar Widget:日历
  • LCD Number:液晶数字
  • Progress Bar:进度条
  • Horizontal Line:水平线
  • Vertical Line:垂直线
  • OpenGL Widget:开放式图形库工具
  • QQuick Widget:嵌入QML工具

1.Text Browser

  Text Browaer对应于QTextBrowser类。QTextBrowser类继承自QTextEdit,且仅是只读的,里面的内容不能修改。
QTextBrowser的属性:

modified : const bool		//通过布尔值来说明其内容是否被修改
openExternalLinks : bool
openLinks : bool
readOnly : const bool
searchPaths : QStringList
source : QUrl
undoRedoEnabled : const bool

  通过以上属性设置,可以设定QTextBrowser是否允许外部链接,是否为只读属性,外部链接的路径及链接的内容,是否可以进行撤销等操作。

QTextBrowser提供的槽:

virtual void backward()
virtual void forward()
virtual void home()

  可以链接着几个槽函数达到“翻页”效果。

2.QQuickWidget

  可以用来嵌入QML代码。

四、空间间隔组(Spacers)

空间间隔组各个控件名称:

  • Horizontal Spacer:水平间隔
  • Vertical Spacer:垂直间隔

五、布局管理组(Layouts)

布局管理组各个控件名称:

  • Vertical Layout:垂直布局
  • Horizontal Layout:水平布局
  • Grid Layout:网格布局
  • Form Layout:表单布局

六、容器组(Containers)

容器组各个控件名称:

  • Group Box:组框
  • Scroll Area:滚动区域
  • Tool Box:工具箱
  • Tab Widget:标签小部件
  • Stacked Widget:堆叠部件
  • Frame:帧
  • Widget:小部件
  • MDI Area:MDI区域
  • Dock Widget:停靠窗体部件
  • QAx Widget:封装Flash的ActiveX控件

1.创建窗口

  如果Widget未使用父级进行创建,则在显示时视为窗口或顶层Widget。由于顶层Widget没有父级对象类来确保在其不再被使用时就被删除,所以需要在应用程序中对其进行跟踪。
使用QWidget创建和显示具有默认大小的窗口:

QWidget *window = new QWidget();
window->resize(320, 240);
window->show();
QPushButton *button = new QPushButton(tr("Press me"), window);	//(a)
button->move(100, 100);
button->show();

(a)通过将window作为父级传递给其构造器来向窗口添加子Widget:button。在这种情况下,向窗口添加按钮并将其放置在特定位置;该按钮为窗口的子项,并在删除窗口时被同时删除。隐藏或关闭窗口不会自动删除该按钮。

2.使用布局

  通常,子Widget是通过使用布局对象在窗口中进行排列的;
构造一个并排排列的标签和行编辑框Widget:

QLabel *label = new QLabel(tr("Name:"));
QLineEdit *lineEdit = new QLineEdit();
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(label);
layout->addWidget(lineEdit);
window->setLayout(layout);

  构造的布局对象管理通过addWidget()函数提供Widget的位置和大小。
  布局本身是通过调用setLayout()函数提供给窗口的。
  由于Widget可以包含其他Widget,所以布局可以用来提供按不同层次分组的Widget。

七、项目视图组(Item Views)

项目视图组各个控件名称:

  • List View:清单视图
  • Tree View:树形视图
  • Table View:表视图
  • Column View:列视图

QTableView与QTableWidget的具体区别:

区别点QTableViewQTableWidget
继承关系QTableWidget继承自QTableView
使用数据模型setModel可以使用setModel设置数据模型setModel是私有函数,不能使用该函数设置数据模型
显示复选框setCheckState没有函数实现复选框QTableWidgetItem类中的setCheckState(Qt::Checked);可以设置复选框
与QSqlTableModel绑定QTableView能与QSqlTableModel绑定QTableWidget不能与QSqlTableModel绑定
  • 模型:所有的模型都基于QAbstractItemModel类,该类是抽象基类。
  • 视图:所有的视图都从抽象基类QAbstractItemView继承。

  InterView框架提供了一些常见的模型类和视图类,如QStandardItemModel、QDirModel、QStringListModel、QProxyModel和QColumnView、QHeaderView、QListView、QTableView、QTreeView。

  • QDirModel可以通过树形方式显示某个目录下的所有子目录及相关信息;
  • QProxyModel用于将旧的Model类型过渡到新的类型上;
  • QStandardItemModel是用最简单的Grid方式显示Model。

QAqlTableModel与QTableView绑定:

QSqlTableModel *model = new QSqlTableModel;
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0);	//不显示ID
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
QTableView *view = new QTableView;
view->setModel(model);
view->show();

  视图与模型绑定时,模型必须使用new创建,否则试图不能随着模型的改变而改变。

八、项目控件组(Item Widgets)

项目控件组各个控件的名称:

  • List Widget:清单控件
  • Tree Widget:树形控件
  • Table Widget:表控件

九、Qt::WindowFlags枚举类型

Qt::WindowFlags枚举类型有以下形式:

  • Qt::Widget:QWidget构造函数的默认值,如果新的窗口部件没有父窗口部件,则它是个独立的窗口,否则就是一个子窗口部件。
  • Qt::Window:无论是否有父窗口部件,新窗口部件都是一个窗口,通常有一个窗口边框和一个标题栏。
  • Qt::Dialog:新窗口部件是一个对话框,它是QDialog构造函数的默认值。
  • Qt::Sheet:新窗口部件是一个Macintosh表单。
  • Qt::Drawer:新窗口部件是一个Macintosh抽屉。
  • Qt::Popup:新窗口部件是一个弹出式顶层窗口。
  • Qt::Tool:新窗口部件是一个工具窗口,通常为一个用于显示的工具按钮的小窗口。如果有父窗口部件,将显示在父窗口部件上面,否则相当于使用Qt::WindowStaysOnTopHint提示。
  • Qt::ToolTip:新窗口部件是一个提示窗口,没有标题栏和窗口边框。
  • Qt::SplashScreen:新窗口部件是一个欢迎窗口,它是QSplashScreen构造函数的默认值。
  • Qt::Desktop:新窗口部件是桌面,它是QDesktopWidget构造函数的默认值。
  • Qt::SubWindow:新窗口部件是一个子窗口,而无论该窗口部件是否有父窗口部件。此外,Qt还定义了一些控制窗口外观的窗口提示(这些窗口提示仅对顶层窗口有效)。
  • Qt::MSWindowsFiredSizeDialogHint:为Windows系统上的窗口装饰一个窄的对话框边框,通常这个提示用于固定大小的对话框。
  • Qt::MSWindowsOwnDC:为Windows系统上的窗口添加自身的显示上下文菜单。
  • Qt::XllBypassWindowManagerHint:完全忽视窗口管理器,它的作用是产生一个根本不被管理的无窗口边框的窗口(此时,用户无法使用键盘进行输入,除非手动调用QWidget::activateWindow()函数)。
  • Qt::FramelessWindowHint:产生一个无窗口边框的窗口,此时用户无法移动该窗口和改变其大小。
  • Qt::CustomizeWindowHint:关闭默认的窗口标题提示。
  • Qt::WindowTitleHint:为窗口装饰一个标题栏
  • Qt::WindowSystemMenuHint:为窗口添加一个窗口系统菜单,并尽可能地添加一个关闭按钮。
  • Qt::WindowMinimizeButtonHint:为窗口添加一个“最小化”按钮。
  • Qt::WindowMaximizeButtonHint:为窗口添加一个“最大化”按钮。
  • Qt::WindowMinMaxButtonHint:为窗口添加一个“最小化”按钮和一个“最大化”按钮。
  • Qt::WindowContextHelpButtonHint:为窗口添加一个“上下文帮助”按钮。
  • Qt::WindowStaysOnTopHint:告知窗口系统,该窗口应该停留在所有其他窗口的上面。
  • Qt::WindowType_Mask:一个用于提取窗口标识中的窗口类型部分的掩码。

  枚举类型Qt::WindowFlags低位的1个字节用于定义窗口部件的窗口类型,0x00000000~0x00000012共定义了11个窗口类型。
  Qt::WindowFlags的高位字节定义了窗口提示,窗口提示能够进行位或操作。
  当Qt::WindowFlags的窗口提示部分全部为0时,窗口提示不起作用。当有一个窗口提示被应用时,若要其他窗口提示起作用,则必须使用位或操作。
示例:

Qt::WindowFlags flags = Qt::Window;
flags |= Qt::WindowTitleHint;
widget->setWindowFlags(flags);

若要取消设置的窗口0提示;
示例:

flags &= Qt::WindowType_Mask;
widget->setWindowFlags(flags);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值