文章目录
一、按钮组(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的具体区别:
区别点 | QTableView | QTableWidget |
---|---|---|
继承关系 | 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);