Qt——常用控件详解

Qt常用控


按钮抽象基类(QAbstractButton)

简述

QAbstractButton类是按钮部件的抽象基类,提供了按钮所共有的功能。

QAbstractButton类实现了一个抽象按钮,并且让它的子类来指定如何处理用户的动作,并指定如何绘制按钮。

QAbstractButton提供了点击和勾选按钮。QRadioButton和QCheckBox类只提供了勾选按钮,QPushButton和QToolButton提供了点击按钮,如果需要的话,它们还可以提供切换行为。

任何按钮,都可以显示一个包含文本和图标的标签。

  • setText(const QString&) 设置文本
  • setIcon(const QIcon&) 设置图标

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

信号与槽

signals

void clicked(bool checked = false) //按钮按下释放之后会触发
void pressed()                     //按钮按下触发
void released()                    //按钮释放触发
void toggled(bool checked)         //每当切换按钮(toggleButton)改变其状态时,就会发出此信号。

public slots

void animateClick(int msec = 100)   //定时自动点击按钮
void click()                        //自动点击按钮
void setChecked(bool)               //设置是否选中按钮(checkable必须被启用)
void setIconSize(const QSize &size) //设置图标大小,较小的图标可能会设置无效
void toggle()                       //切换按钮的选中状态

公有函数

bool autoExclusive() const                //此属性保存是否启用了自动独占
bool autoRepeat() const                   //此属性保存是否启用autoRepeat
int autoRepeatDelay() const               //此属性保存自动重复的初始延迟
int autoRepeatInterval() const            //此属性保存自动重复的时间间隔
QButtonGroup *group() const               //返回此按钮所属的组。
QIcon icon() const                        //此属性保存按钮上显示的图标
QSize iconSize() const                    //此属性保存用于此按钮的图标大小。
bool isCheckable() const                  //此属性保存按钮是否可选中
bool isChecked() const                    //该属性保存按钮是否被选中
bool isDown() const                       //该属性保存按钮是否被按下
void setAutoExclusive(bool)               //可选中按钮是否独占, 在独占按钮组(同一父对象为同一组)中,任何时候只能选中一个按钮
void setAutoRepeat(bool)                  //如果启用,按钮按下不松开,pressed()、released()和clicked()信号会定期发出
void setAutoRepeatDelay(int)              //如果启用了autoRepeat,那么autoRepeatDelay将定义自动重复生效前的初始延迟(以毫秒为单位)。
void setAutoRepeatInterval(int)           //如果启用了autoRepeat,则autoRepeatInterval定义了自动重复间隔的长度,以毫秒为单位。
void setCheckable(bool)                   //设置按钮是否能够被选中,默认是不能被选中的
void setDown(bool)                        //设置按钮是否被按下
void setIcon(const QIcon &icon)           //设置图标
void setShortcut(const QKeySequence &key) //设置快捷键
void setText(const QString &text)         //设置文本
QKeySequence shortcut() const             //此属性保存与按钮关联的助记符
QString text() const                      //此属性保存按钮上显示的文本

示例:

QPushButton*btn = new QPushButton("Touch Me",this);
btn->move(100,100);
​
//按钮按下释放之后会触发
connect(btn,&QPushButton::clicked,this,[](){qDebug()<<"clicked";});
//按钮按下触发
connect(btn,&QPushButton::pressed,this,[](){qDebug()<<"pressed";});
//按钮释放触发
connect(btn,&QPushButton::released,this,[](){qDebug()<<"released";});
​
btn->setCheckable(true);    //设置按钮可选中
connect(btn,&QPushButton::toggled,this,[=]()
{
    qDebug()<<"toggled"<<btn->isChecked();
});


1. 推动按钮(QPushButton)

简述

QPushButton最常用的控件之一,应用场景十分广泛。Inherits:QAbstractButton 继承自父类QAbstractButton

信号与槽

signals

public slots

void showMenu() //显示(弹出)相关的弹出菜单。如果没有这样的菜单,这个函数什么也不做。在用户关闭弹出式菜单之前,此函数不会返回。

公有函数

bool autoDefault() const  //此属性保存按钮是否为自动默认按钮如果该属性设置为true,则按钮为自动默认按钮。
bool isDefault() const    //该属性保存按钮是否为默认按钮,默认和自动默认按钮决定用户在对话框中按回车键时发生的情况。
bool isFlat() const       //无论按钮边框是否被抬起,此属性都保持不变。
QMenu *menu() const       //返回按钮关联的弹出菜单,如果没有设置弹出菜单,则返回nullptr。
void setAutoDefault(bool) //设为自动默认按钮,按下Enter键时会自动按下按钮
void setDefault(bool)     //设为自动默认按钮,按下Enter键时会自动按下按钮
void setFlat(bool)        //去掉按钮的边框,让PushButton按钮跟背景色融为一体,在点击按钮时,会出现原来按钮背景。
void setMenu(QMenu *menu) //将弹出式菜单与这个按钮关联起来。这将把按钮变成一个菜单按钮,在某些样式中,它会在按钮文本的右边产生一个小三角形。

示例:

QMenu* menu = new QMenu("Menu");
menu->addAction("hello");
menu->addAction("world");
​
btn->setMenu(menu);
connect(menu,&QMenu::triggered,this,[=](QAction*act)
{
    btn->setText(act->text());
});


2. 工具按钮(QToolButton)

简述

QToolButton是一个特殊的Button, 提供快速访问特定的命令或选项。与普通命令按钮不同, QToolButton通常不显示文本标签, 而是显示图标, 一般用在toolBar上。Inherits:QAbstractButton 继承自父类QAbstractButton

信号与槽

signals

void triggered(QAction *action) //当给定的动作被触发时,这个信号就会发出。

public slots

void setDefaultAction(QAction *action)             //如果有菜单,弹出菜单,否则啥也不做(这个槽貌似没啥用)
void setToolButtonStyle(Qt::ToolButtonStyle style) //该属性保存工具按钮是否只显示图标、只显示文本或图标旁边/下面的文本。
void showMenu()                                    //显示(弹出)相关的弹出菜单。如果没有这样的菜单,这个函数什么也不做。在用户关闭弹出式菜单之前,此函数不会返回。

公有函数

Qt::ArrowType arrowType() const                          //此属性保存按钮是否显示箭头而不是普通图标
bool autoRaise() const                                   //无论是否启用自动提升,此属性都保持不变。
QAction *defaultAction() const                           //返回默认操作。
QMenu *menu() const                                      //返回相关联的菜单,//如果没有定义菜单则返回nullptr。
QToolButton::ToolButtonPopupMode popupMode() const       //描述与工具按钮一起使用弹出菜单的方式。默认情况下,此属性设置为DelayedPopup。
int void setArrowType(Qt::ArrowType type)                //此属性用于保存按钮是否显示箭头而不是普通图标
void setAutoRaise(bool enable)                           //去掉边框和背景,鼠标在按钮上面时,显示选中效果,按下时有下沉效果
void setMenu(QMenu *menu)                                //设置弹出菜单
void setPopupMode(QToolButton::ToolbuttonPopupMode mode) //描述如何将弹出菜单与工具按钮一起使用,默认设置为DelayedPopup
Qt::ToolButtonStyle toolButtonStyle() const              //该属性保存工具按钮是否只显示图标、只显示文本或图标旁边/下面的文本。

示例:

QMenu*menu = new QMenu;
menu->addAction("C语言");
menu->addAction("C++");
​
toolbtn->setMenu(menu);
//设置弹出模式,DelayedPopup延时弹出 MenuButtonPopup在右侧显示一个箭头  InstantPopup立即弹出
toolbtn->setPopupMode(QToolButton::DelayedPopup);
//设置按钮菜单之后,右下角有一个小箭头,去掉箭头
toolbtn->setStyleSheet("QToolButton::menu-indicator {image: none;}");


3. 单选按钮(QRadioButton)

简述

QRadioButton部件提供了一个带有文本标签的单选按钮。QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。

信号与槽

signals

public slots

常用函数

void setCheckState(Qt::CheckState state) //将复选框的复选状态设置为state。
void setTristate(bool)                   //该属性保存复选框是否是三状态复选框,默认为false,即复选框只有两个状态

示例:

同一组(同一父对象)的单选按钮一次只能选中一个

QRadioButton* radiobtn = new QRadioButton("男",this);

radiobtn->setChecked(true);  //设置默认选中
radiobtn->setEnabled(false); //禁用按钮
radiobtn->setEnabled(true);  //启用按钮
radiobtn->setText("文本");   //设置文本
radiobtn->isChecked();       //返回按钮是否开启状态

同一组同时选中多个

QGroupBox* exampleGroup = new QGroupBox("esample",this);
QLabel*label = new QLabel("你喜欢以下哪些宠物?");
exampleGroup->move(300,300);
QRadioButton *dogbtn =  new QRadioButton("狗");
QRadioButton *catbtn =  new QRadioButton("猫");
QRadioButton *snakebtn =  new QRadioButton("蛇");
QRadioButton *pigbtn =  new QRadioButton("猪");
​
dogbtn->setAutoExclusive(false);
catbtn->setAutoExclusive(false);
snakebtn->setAutoExclusive(false);
pigbtn->setAutoExclusive(false);
​
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(label);
layout->addWidget(dogbtn);
layout->addWidget(catbtn);
layout->addWidget(snakebtn);
layout->addWidget(pigbtn);
​
exampleGroup->setLayout(layout);

不同组的单选按钮可以同时选中

QGroupBox* sexGroup = new QGroupBox("性别",this);
QGroupBox* viewpointGroup = new QGroupBox("观点",this);
sexGroup->move(200,300);
viewpointGroup->move(300,300);
​
QRadioButton*radiobtn = new QRadioButton("男",sexGroup);
QRadioButton*radiobtn1 = new QRadioButton("女",sexGroup);
​
QRadioButton*radiobtn2 = new QRadioButton("好",viewpointGroup);
QRadioButton*radiobtn3 = new QRadioButton("坏",viewpointGroup);
​
QHBoxLayout* sexLayout = new QHBoxLayout;
sexLayout->addWidget(radiobtn);
sexLayout->addWidget(radiobtn1);
​
QHBoxLayout* viewpointLayout = new QHBoxLayout;
viewpointLayout->addWidget(radiobtn2);
viewpointLayout->addWidget(radiobtn3);
​
sexGroup->setLayout(sexLayout);
viewpointGroup->setLayout(viewpointLayout);


4. 复选框(QCheckBox)

简述

QCheckBox提供了一个带文本标签的复选框。

QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。

尽管在技术上可以通过复选框来实现单选框的行为,反之亦然,但还是强烈建议使用众所周知的约定。Inherits:QAbstractButton 继承自父类QAbstractButton

信号与槽

signals

void stateChanged(int state)//当复选框的状态发生变化时,即当用户选中或取消选中它时,就会发出这个信号。

public slots

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

公有函数

Qt::CheckState checkState() const        //返回复选框的复选状态。
bool isTristate() const                  //默认值为false,即复选框只有两种状态。
void setCheckState(Qt::CheckState state) //将复选框的复选状态设置为状态。
void setTristate(bool y = true)          //默认值为false,即复选框只有两种状态。

示例:

QGroupBox* exampleGroup = new QGroupBox(this);
exampleGroup->move(300,300);
​
QLabel*label = new QLabel("你喜欢以下哪些宠物?");
QCheckBox *dogbtn =  new QCheckBox("狗");
QCheckBox *catbtn =  new QCheckBox("猫");
QCheckBox *snakebtn =  new QCheckBox("蛇");
QCheckBox *pigbtn =  new QCheckBox("猪");
​
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(label);
layout->addWidget(dogbtn);
layout->addWidget(catbtn);
layout->addWidget(snakebtn);
layout->addWidget(pigbtn);
​
exampleGroup->setLayout(layout);


5. 组合框(QComboBox)

简述

QComboBox是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。QComboBox 除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个 QVariant 类型的变量,用于存储一些不可见数据。

信号与槽

signals:

void activated(int index)                     //当用户在组合框中选择一个项目时,就会发送这个信号。传递项目的索引。注意,即使选择没有改变,这个信号也会被发送。
void currentIndexChanged(int index)           //每当组合框中的currentIndex通过交互或编程方式发生变化时,就会发送这个信号.传递项目的索引
void currentIndexChanged(const QString &text) //每当组合框中的currentIndex通过交互或编程方式发生变化时,就会发送这个信号.传递项目的文本
void currentTextChanged(const QString &text)  //每当currentText发生变化时,就会发送这个信号。新值作为文本传递。
void editTextChanged(const QString &text)     //当组合框的行编辑小部件中的文本发生更改时,会发出此信号。新文本由text指定。
void highlighted(int index)                   //当用户突出显示组合框弹出列表中的一个项目时,就会发送这个信号。传递项目的索引。
void textActivated(const QString &text)       //当用户在组合框中选择一个项目时,就会发送这个信号。传递项目的文本。注意,即使选择没有改变,这个信号也会被发送。
void textHighlighted(const QString &text)     //当用户突出显示组合框弹出列表中的一个项目时,就会发送这个信号。传递项目的文本。

public slots

void clear()                             //清空组合框所有选项
void clearEditText()                     //清除组合框中用于编辑的行编辑的内容
void setCurrentIndex(int index)          //设置当前选中项,传递项目的索引
void setCurrentText(const QString &text) //设置当前选中项,传递项目的文本
void setEditText(const QString &text)    //设置组合框的文本编辑器中的文本

公有函数

void addItem(const QString &text, const QVariant &userData = QVariant()) //用给定的文本向组合框中添加一个项,并包含指定的userData(存储在Qt::UserRole中)。该项被追加到现有项的列表中。
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant()) //用给定的图标和文本添加一个项目到组合框中,并包含指定的userData(存储在Qt::UserRole中)。该项被追加到现有项的列表中。
void addItems(const QStringList &texts) //将给定文本中的每个字符串添加到组合框中。每个项目依次添加到现有项目的列表中。
QCompleter* completer() const //返回用于自动完成组合框文本输入的补全程序。
int count() const //此属性保存组合框中的项数。默认情况下,对于空的组合框,此属性的值为0。
QVariant currentData(int role = Qt::UserRole) const //此属性保存当前项的数据。默认情况下,对于空的组合框或没有设置当前项的组合框,此属性包含无效的QVariant。
int currentIndex() const //此属性保存组合框中当前项的索引。在插入或删除项时,当前索引可以更改。默认情况下,对于空组合框或未设置当前项的组合框,此属性的值为-1。
QString currentText() const //此属性保存当前文本。如果组合框是可编辑的,则当前文本是行编辑显示的值。否则,它是当前项的值,如果组合框为空或没有设置当前项,则为空字符串。
bool duplicatesEnabled() const //此属性保存用户是否可以在组合框中输入重复项。请注意,始终可以通过编程方式将重复的项插入组合框中。默认情况下,此属性为false(不允许重复)。
int findData(const QVariant &data, int role = ...) const//返回包含给定角色给定数据的项的索引;否则返回1。标志指定如何搜索组合框中的项目。
int findText(const QString &text, Qt::MatchFlags flags = ...) const //返回包含给定文本的项的索引,否则返回-1。标志指定如何搜索组合框中的项目。
bool hasFrame() const //该属性保存组合框是否使用框架绘制自身。如果启用(默认),组合框在帧内绘制自己,否则组合框在没有任何帧的情况下绘制自己。
virtual void hidePopup() //隐藏组合框中当前可见的项目列表,并重置内部状态,这样,如果自定义弹出窗口显示在重新实现的showPopup()中,那么您还需要重新实现hidePopup()函数来隐藏自定义弹出窗口,并在自定义弹出窗口小部件被隐藏时调用基类实现来重置内部状态。
QSize iconSize() const //此属性保存组合框中显示的图标的大小。
void insertItem(int index, const QString &text, const QVariant &userData = QVariant()) //将文本和userData(存储在Qt::UserRole)插入到给定索引的组合框中。
void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant()) //将图标、文本和userData(存储在Qt::UserRole中)插入到给定索引的组合框中。
void insertItems(int index, const QStringList &list) //从指定的索引开始,将列表中的字符串作为单独的项插入组合框。
QComboBox::InsertPolicy insertPolicy() const //此属性保存用于确定用户插入项应出现在组合框中的位置的策略。默认值是InsertAtBottom,表示新项目将出现在项目列表的底部。
void insertSeparator(int index) //将分隔符项插入到给定索引的组合框中。
bool isEditable() const //此属性保存用户是否可以编辑组合框。默认情况下,该属性为false。编辑的效果取决于插入策略。
QVariant itemData(int index, int role = Qt::UserRole) const //返回组合框中给定索引中给定角色的数据,如果没有此角色的数据,则QVariant::Invalid。
QAbstractItemDelegate *itemDelegate() const //返回弹出列表视图使用的项目委托。
QIcon itemIcon(int index) const //返回组合框中给定索引的图标。
QString itemText(int index) const //返回组合框中给定索引的文本。
QLineEdit *lineEdit() const //返回用于编辑组合框中的项的行编辑,如果没有行编辑,则返回O。只有可编辑的组合框具有行编辑功能。
int maxCount() const //此属性保存组合框中允许的最大项数。
int maxVisibleItems() const //此属性保存组合框在屏幕上允许的最大大小,以项目为单位。默认情况下,该属性的值为10。
int minimumContentsLength() const //此属性保存组合框中应该包含的最小字符数。缺省值为0。
QAbstractItemModel *model() const //返回组合框使用的模型。
int modelColumn() const //此属性保存模型中可见的列。
void removeItem(int index) //从组合框中移除给定索引处的项。如果索引被删除,这将更新当前索引。如果index超出了范围,这个函数不会执行任何操作。
QModelIndex rootModelIndex() const //返回组合框中项的根模型项索引。
void setCompleter(QCompleter *completer) //设置要使用的补全程序而不是当前补全程序。如果completer为O,则禁用自动完成。
void setDuplicatesEnabled(bool enable) //此属性保存用户是否可以在组合框中输入重复项。注意,总是可以通过编程方式将重复的项目插入组合框中。默认情况下,此属性为false(不允许重复)。
void setEditable(bool editable) //此属性保存用户是否可以编辑组合框。默认情况下,该属性为false。编辑的效果取决于插入策略。
void setFrame(bool) //该属性保存组合框是否使用框架绘制自身。如果启用(默认),组合框在帧内绘制自己,否则组合框在没有任何帧的情况下绘制自己。
void setIconSize(const QSize &size) //此属性保存组合框中显示的图标的大小。除非显式设置,否则将返回当前样式的默认值。这个尺寸是图标可以拥有的最大尺寸;较小尺寸的图标不会被放大。
void setInsertPolicy(QComboBox::InsertPolicy policy) //此属性保存用于确定用户插入项应出现在组合框中的位置的策略。默认值是InsertAtBottom,表示新项目将出现在项目列表的底部。
void setItemData(int index, const QVariant &value, int role = Qt::UserRole) //将组合框中给定索引上的项的数据角色设置为指定的值。
void setItemDelegate(QAbstractItemDelegate *delegate) //为弹出列表视图设置项委托。组合框获得委托的所有权。
void setItemIcon(int index, const QIcon &icon) //设置组合框中给定索引上项目的图标。
void setItemText(int index, const QString &text) //设置组合框中给定索引上的项的文本。
void setLineEdit(QLineEdit *edit) //设置要使用的行编辑而不是当前的行编辑小部件。组合框获得行编辑的所有权。
void setMaxCount(int max) //此属性保存组合框中允许的最大项数。
void setMaxVisibleItems(int maxItems) //此属性保存组合框在屏幕上允许的最大大小,以项目为单位。默认情况下,该属性的值为10。
void setMinimumContentsLength(int characters) //此属性保存组合框中应该包含的最小字符数。缺省值为0。
void setModel(QAbstractItemModel *model) //将模型设置为模型。如果你想清除模型的内容,请调用clear()。请参见model()和clear()
void setModelColumn(int visibleColumn) //此属性保存模型中可见的列。如果在填充组合框之前设置,弹出视图将不受影响,并显示第一列(使用该属性的默认值)。默认情况下,此属性的值为0。
void setRootModelIndex(const QModelIndex &index) //为组合框中的项设置根模型项索引。参见rootModellndex()。
void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy) //此属性保存描述当内容更改时组合框大小如何更改的策略。默认值是AdjustToContentsOnFirstShow。
void setValidator(const QValidator *validator) //设置要使用的验证器而不是当前验证器。
void setView(QAbstractItemView *itemView) //将组合框弹出框中使用的视图设置为给定的itemView。组合框获得视图的所有权。
virtual void showPopup() //显示组合框中的项目列表。如果列表为空,则将显示no项目。如果你重新实现这个函数来显示一个自定义弹出窗口,请确保你调用了hidePopup()来重置内部状态。参见hidePopup()。
QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const //此属性保存描述当内容更改时组合框大小如何更改的策略。默认值是AdjustToContentsOnFirstShow。
const QValidator *validator() const //返回用于约束组合框文本输入的验证器。参见setValidator()和editable。
QAbstractItemView *view() const //返回组合框弹出框所使用的列表视图。参见setView()。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓


6. 行编辑器(QLineEdit)

简述

QLineEdit是一个单行文本输入框。QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。

信号与槽

signals

void cursorPositionChanged(int oldPos, int newPos) //这个信号在光标移动时发出。
void editingFinished()                             //当按下Return或Enter键或行编辑失去焦点时,会发出此信号。
void inputRejected()                               //当用户按下一个不被认为是可接受输入的键时,就会发出这个信号。
void returnPressed()                               //当按下Return或Enter键时,会发出此信号。
void selectionChanged()                            //每当选择发生变化时,就会发出这个信号。
void textChanged(const QString &text)              //每当文本发生变化时,就会发出这个信号。text参数是新的text。
void textEdited(const QString &text)               //每当编辑文本时,就会发出此信号。text参数是新的text。

public slots

void clear()                  //清除行编辑的内容
void copy() const             //将选中的文本复制到剪贴板(如果有的话),并且echoMode()是Normal
void cut()                    //剪切
void paste()                  //粘贴
void redo()                   //撤销
void selectAll()              //选中所有
void setText(const QString &) //设置文本内容
void undo()                   //反撤销

公有函数

void addAction(QAction *action, QLineEdit::ActionPosition position) //将操作添加到该位置的操作列表中。
QAction *addAction(const QIcon &icon, QLineEdit::ActionPosition position) //这是一个重载函数。在指定位置创建一个具有给定图标的新操作。
Qt::Alignment alignment() const //此属性保存行编辑的对齐方式。
void backspace() //如果没有选中文本,则删除文本光标左边的字符,并将光标向左移动一个位置。如果选中了任何文本,光标会移动到所选文本的开头,并删除所选文本。
QCompleter *completer() const //返回提供补全的当前QCompleter。
QMenu *createStandardContextMenu() //这个函数创建了标准的上下文菜单,当用户用鼠标右键单击编辑行时,该菜单就会显示出来。
void cursorBackward(bool mark, int steps = 1) //将光标向后移动字符。如果mark为true,移动的每个字符都会被添加到选区中;如果标记为假,则清除选择。
void cursorForward(bool mark, int steps = 1) //将光标向前移动字符。如果mark为true,移动的每个字符都会被添加到选区中;如果标记为假,则清除选择。
Qt::CursorMoveStyle cursorMoveStyle() const //该属性保存光标在编辑行中的移动样式。
int cursorPosition() const //此属性保存此行编辑的当前光标位置。
int cursorPositionAt(const QPoint &pos) //返回光标在pos点下的位置。
void cursorWordBackward(bool mark) //将光标向后移动一个单词。如果标记为真,该词也被选中。
void cursorWordForward(bool mark) //将光标向前移动一个字。如果标记为真,该词也被选中。
void del() //如果没有选中文本,则删除文本光标右边的字符。如果选中了任何文本,光标会移动到所选文本的开头,并删除所选文本。
void deselect() //取消选择任何选定的文本。
QString displayText() const //此属性保存显示的文本。
bool dragEnabled() const //当用户在某些选定文本上按下并移动鼠标时,该属性将保持lineedit是否开始拖动。拖动默认禁用。
QLineEdit::EchoMode echoMode() const //此属性保存行编辑器的回显模式。回显模式决定在行编辑中输入的文本如何显示(或回显)给用户。
void end(bool mark) //将文本光标移动到行尾,除非它已经在行尾。如果mark为真,则文本将朝着最后一个位置选择;否则,当光标移动时,所选文本将被取消选中。
bool hasAcceptableInput() const //该属性保存输入是否满足inputMask和验证器。默认情况下,该属性为true。
bool hasFrame() const //此属性保存行编辑是否使用框架绘制自身。如果启用(默认),则行编辑将在框架内绘制自己,否则行编辑将在没有任何框架的情况下绘制自己。
bool hasSelectedText() const //此属性保存是否有任何选定的文本。hasSelectedText()返回true如果部分或全部文本已被用户选中;否则返回false。默认情况下,该属性为false。
void home(bool mark) //移动文本光标到行首,除非行首已经在行首。如果标记为真,则文本向第一个位置选择;否则,任何如果移动光标,选中的文本将被取消选中。
QString inputMask() const //此属性保存验证输入掩码。如果没有设置掩码,inputMask()返回一个空字符串。
void insert(const QString &newText) //删除任何选定的文本,插入newText,并验证结果。如果它有效,则将其设置为行编辑的新内容。
bool isClearButtonEnabled() const //此属性保存行编辑在非空时是否显示清除按钮。
bool isModified() const //此属性保存行编辑的内容是否已被用户修改。bool isReadOnly() const //此属性保持行编辑是否为只读。
bool isRedoAvailable() const //此属性保存重做是否可用。
bool isUndoAvailable() const //此属性保存撤消是否可用。
int maxLength() const //此属性保存文本的最大允许长度。
QString placeholderText() const //此属性保存行编辑的占位符文本。
QString selectedText() const //此属性保存所选文本。
int selectionEnd() const //返回在编辑行中选定内容之后的字符索引,如果没有选择文本,则返回-1。
int selectionLength() const //返回所选内容的长度。
int selectionStart() const //返回编辑行中第一个选定字符的索引,如果没有选定文本,则返回-1。
void setAlignment(Qt::Alignment flag) //此属性保存行编辑的对齐方式。
void setClearButtonEnabled(bool enable) //此属性保存行编辑在非空时是否显示清除按钮。
void setCompleter(QCompleter *c) //设置此行编辑以从补全器c提供自动补全。
void setCursorMoveStyle(Qt::CursorMoveStyle style) //此属性保存此行编辑中的光标移动样式。
void setCursorPosition(int) //此属性保存此行编辑的当前光标位置。
void setDragEnabled(bool b) //当用户在某些选定文本上按下并移动鼠标时,该属性将保持lineedit是否开始拖动。拖动默认禁用。
void setEchoMode(QLineEdit::EchoMode) //此属性保存行编辑器的回显模式。
void setFrame(bool) //此属性保存行编辑是否使用框架绘制自身。void setInputMask(const QString &inputMask) //此属性保存验证输入掩码。
void setMaxLength(int) //此属性保存文本的最大允许长度。
void setModified(bool) //此属性保存行编辑的内容是否已被用户修改。
void setPlaceholderText(const QString &) //此属性保存行编辑的占位符文本。
void setReadOnly(bool) //此属性保持行编辑是否为只读。
void setSelection(int start, int length) //选择从位置开始的文本和长度字符。允许负长度。
void setTextMargins(int left, int top, int right, int bottom) //将框架内文本周围的边距设置为左、上、右和下的大小。
void setTextMargins(const QMargins &margins) //设置框架内文本的边距。
void setValidator(const QValidator *v) //将这一行编辑设置为只接受验证器v将接受的输入。这允许您对可能输入的文本施加任意约束。
QString text() const //此属性保存行编辑器的文本。
QMargins textMargins() const //将这一行编辑设置为只接受验证器v将接受的输入。这允许您对可能输入的文本施加任意约束。
const QValidator *validator() const //将这一行编辑设置为只接受验证器v将接受的输入。这允许您对可能输入的文本施加任意约束。

示例:

设置显示模式

edit->setEchoMode(QLineEdit::EchoMode::Password);
QLineEdit::Normal               //显示输入的字符,这是默认值。  
QLineEdit::NoEcho               //不要显示任何东西
QLineEdit::Password             //显示与平台相关的密码掩码字符,而不是实际输入的字符。  
QLineEdit::PasswordEchoOnEdit                   //在编辑时显示已输入的字符,完成显示掩码字符
edit->setClearButtonEnabled(true);              //启用清除按钮

设置输入掩码

掩码字符含义
AASCII字母字符是必须的,A-Z,a-z
aASCII 字母字符是允许的但不是必须的
NASCII字母字符是必须的,A-Z,a-z, 0-9
nASCII 字母字符是允许的但不是必须的
X任何字符都可以,是必须需要的
x任何字符都允许的,但不是必须需要的
9ASCII 数字是必须要的,0-9
0ASCII 数字是允许的,但不是必须要的
DASCII 数字是必须要的,1-9
dASCII 数字是允许的,但不是必须要的
#ASCII 数字是或加减符号允许的,但不是必须要的
H十六进制数据字符是必须要的,A-F, a-f, 0-9
h十六进制数据字符是允许的,但不是必须要的
B二进制数据字符是必须要的,0-1
b二进制数据字符是允许的,但不是必须要的
>所有的字符字母都都大写的
<所有的字符字幕都是小写的
!关闭大小写
;c终止输入掩码并将空白字符设置为c
\使用 \ 去转义上面的字符,如果再需要显示上述字符的时候

输入日期

edit->setText(QDate::currentDate().toString("yyyy-MM-dd"));
edit->setInputMask("9999-99-99");

输入秘钥

edit->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA");

设置验证器

  • 只能输入整数

edit->setValidator(new QIntValidator(-90,90,this));
  • 只能输入浮点数,但是浮点数验证器不能限制范围,可以随便输入

edit->setValidator(new QDoubleValidator(-90.0,90.0,3,this));

添加动作

void QLineEdit::addAction(QAction *action, QLineEdit::ActionPosition position)
QAction *QLineEdit::addAction(const QIcon &icon, QLineEdit::ActionPosition position)
QLineEdit *edit = new QLineEdit(this);
edit->addAction(QIcon("://images/user.png"),QLineEdit::ActionPosition::LeadingPosition);
QAction *delAct = edit->addAction(QIcon("://images/delete.png"),QLineEdit::ActionPosition::TrailingPosition);
connect(delAct,&QAction::triggered,[]()
{
    qDebug()<<"delAct";
});


7. 旋转框(QSpinBox)

简述

QSpinBox用于整数的显示和输入,一般显示十进制数,也可以显示二进制和十六进制数,而且可以在显示框增加前辍或后辍

信号与槽

signals

void textChanged(const QString &text) //每当旋转框的文本被改变时,这个信号就会发出。
void valueChanged(int i)          //每当旋转框的值发生变化时,就会发出这个信号。

public slots

void setValue(int val) //设置当前值

公有函数

QString cleanText() const                             //此属性保存旋转框的文本,不包括任何前缀、后缀或前导或尾随空格。
int displayIntegerBase() const                        //此属性保存用于显示旋转框值的基数。默认的displaylntegerBase值为10。
int maximum() const                                   //此属性保存旋转框的最大值
int minimum() const                                   //此属性保存旋转框的最小值
QString prefix() const                                //此属性保存旋转框的前缀
void setDisplayIntegerBase(int base)                  //此属性保存用于显示旋转框值的基数。默认的displaylntegerBase值为10。
void setMaximum(int max)                              //设置最大值
void setMinimum(int min)                              //设置最小值
void setPrefix(const QString &prefix)                 //设置前缀
void setRange(int minimum, int maximum)               //设置最小值和最大值
void setSingleStep(int val)                           //设置每次改变多少
void setStepType(QAbstractSpinBox::StepType stepType) //将旋转框的步长类型设置为步长类型,它是单步长或自适应十进制步长。
void setSuffix(const QString &suffix)                 //设置后缀
int singleStep() const                                //此属性保存步长值
QAbstractSpinBox::StepType stepType() const           //此属性保存步骤类型。步长类型可以为单步长或自适应十进制步长。
QString suffix() const                                //此属性保存旋转框的后缀后缀追加到显示值的末尾。典型的用法是显示计量单位或货币符号。
int value() const                                     //此属性保存旋转框的值


8. 滑块(QSlider)

简述

QSlider是滑动条控件,最常见的应用就是视频播放器中的进度条。QSlider允许用户通过鼠标进行拖动、点击(需要重写mousePressEvent事件实现),下面将从这几个方面对QSlider进行介绍:

信号与槽

signals

void actionTriggered(int action)    //当滑块动作被触发时,这个信号就会发出。
void rangeChanged(int min, int max) //当滑块范围发生变化时,发出这个信号,min是新的最小值,max是新的最大值。
void sliderMoved(int value)         //当用户拖动滑块时发出.
void sliderPressed()                //当用户开始拖动滑块时发出.
void sliderReleased()               //当用户释放滑块时发出.
void valueChanged(int value)        //当滑块的值发生变化时发出.

public slots

void setOrientation(Qt::Orientation) //保存滑块的方向 Qt::Vertical or Qt::Horizontal
void setRange(int min, int max)      //设置滑块的最小值为min,最大值为max
void setValue(int)                   //设置滑块的当前值

公有函数

void setMaximum(int)                 //设置最大值
void setMinimum(int)                 //设置最小值
void setSingleStep(int)              //设置在键盘上按下→键或←键时的步进值
void setPageStep(int)                //设置鼠标点击时移动的步进值
void setValue(int)                   //设置当前值
int value() const                    //获取当前值
void setTracking(bool enable)        //打开或关闭滑块跟踪
void setOrientation(Qt::Orientation) //设置水平滑动条或垂直滑动条 Qt::Vertical or Qt::Horizontal.

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓


9. 滚动条(QScrollBar)

简述

QScrollBar用于显示控件上不能完全显示的区域,与Slider类似,但是QScrollBar控件可在底部或者右侧使用。可以将其移动到特定区域,Inherits: QAbstractSlider 继承自父类QAbstractSlider 。

信号与槽

signals

void actionTriggered(int action)    //当滑块动作被触发时,这个信号就会发出。
void rangeChanged(int min, int max) //当滑块范围发生变化,min为新的最小值,max为新的最大值时,发出这个sianal
void sliderMoved(int value)         //当用户拖动滑块时,被发射
void sliderPressed()                //用户开始拖动滑块时,被发射
void sliderReleased()               //当用户释放滑块时,被发射
void valueChanged(int value)        //当滚动条的值已经发生改变时,被发射

public slots

void setOrientation(Qt::Orientation) //保存滑块的方向 Qt::Vertical or Qt::Horizontal
void setRange(int min, int max)      //设置滑块的最小值为min,最大值为max
void setValue(int)                   //设置滑块的当前值

常用函数

void setOrientation(Qt::Orientation) //设置水平滑动条或垂直滑动条 Qt::Vertical or Qt::Horizontal.
void setPageStep(int)                //控制条宽度.
void setValue(int)                   //设置当前值.


10. 标签(QLabel)

简述

QLabel用于显示文本或图像的窗口部件

信号与槽

signals

void linkActivated(const QString &link) //当用户点击链接时会发出此信号。
void linkHovered(const QString &link)   //当用户将鼠标悬停在链接上时会发出此信号。 

public slots

void clear()                             //清除标签所有内容
void setMovie(QMovie *movie)             //清除之前的任何内容
void setNum(double num)                  //设置数字
void setNum(int num)                     //设置数字
void setPicture(const QPicture &picture) //将标签内容设置为picture,清除之前的任何内容
void setPixmap(const QPixmap &)          //设置标签的像素图
void setText(const QString &)            //设置标签的文本内容

公有函数

Qt::Alignment alignment() const //此属性保存标签内容的对齐方式
QWidget *buddy() const //返回这个标签的好友,如果当前没有设置好友则返回nullptr。
bool hasScaledContents() const //该属性保存标签是否缩放其内容以填充所有可用空间。
bool hasSelectedText() const //此属性保存是否有任何选定的文本
int indent() const //此属性保存标签的文本缩进(以像素为单位)
int margin() const //此属性保存边距的宽度
QMovie *movie() const //返回指向标签的影片的指针,如果没有设置影片,则返回nullptr。
bool openExternalLinks() const //指定QLabel是否应该使用QDesktopServices::openUrl()自动打开链接,而不是发出linkActivated()信号。
const QPicture *picture() const //返回标签的图片,如果标签没有图片则返回nullptr。
const QPixmap *pixmap() const //这个属性保存标签的像素图
QString selectedText() const //此属性保存所选文本
int selectionStart() const //返回标签中第一个选中字符的索引,如果没有选择文本,则返回-1。
void setAlignment(Qt::Alignment) //设置对齐方式
void setBuddy(QWidget *buddy) //将此标签的好友设置为buddy。当用户按下此标签指示的快捷键时,键盘焦点将转移到标签的好友小部件。伙伴机制仅适用于包含文本的 QLabel,其中一个字符以与号“&”为前缀。
void setIndent(int) //设置label的文本缩进,以像素为单位
void setMargin(int) //设置边距
void setOpenExtrenalLinks(bool open) //设置是否自动打开超链接
void setScaledContents(bool) //设置内容缩放,确定标签是否将其内容缩放以填充所有可用空间。
void setSelection(int start,int len) //设置对齐方式
void setTextFormat(Qt::TextFormat) //设置标签文本格式
void setTextInteractionFlags(Qt::TextInteractionFlags flag) //设置对齐方式
void setWordWrap(bool on) //设置是否在需要时自动换行
QString text() const //此属性保存标签的文本
Qt::TextFormat textFormat() const //此属性保存标签的文本格式
Qt::TextInteractionFlags textInteractionFlags() const //指定标签在显示文本时应如何与用户输入交互。
bool wordWrap() const //这个属性保存标签的换字策略

示例:

显示文本

QLabel* label = new QLabel("我是萌萌哒的小可爱",this);
label->setAlignment(Qt::AlignmentFlag::AlignCenter);
label->setFixedWidth(100);  //设置固定的宽度
label->setWordWrap(true);   //当文本超过固定的宽度之后,自动换行

设置超链接:QLabel支持html文本

label->setText("<a href=\"www.baidu.com\">百度一下</a>");
connect(label,&QLabel::linkHovered,this,[=](const QString& link){qDebug()<<"linkHovered"<<link;});    
connect(label,&QLabel::linkActivated,this,[=](const QString& link){qDebug()<<"linkActivated"<<link;});
//设置自动打开超链接,而不是发出信号自己处理,这个设置之后会自动在浏览器打开连接
label->setOpenExternalLinks(true);

设置伙伴

QLabel* nameLabel = new QLabel("&Name",this);   
QLineEdit * nameEdit = new QLineEdit;           
nameLabel->setBuddy(nameEdit);                  
                                                
QLabel* phoneLabel = new QLabel("电话(&P)",this); 
QLineEdit* phoneEdit = new QLineEdit;           
phoneLabel->setBuddy(phoneEdit);                
                                                
QGridLayout* layout = new QGridLayout;          
layout->addWidget(nameLabel,0,0);               
layout->addWidget(nameEdit,0,1);                
layout->addWidget(phoneLabel,1,0);              
layout->addWidget(phoneEdit,1,1);               
                                                
setLayout(layout);

显示图片

QLabel* label = new QLabel(this);
label->setPixmap(QPixmap("://images/label_img.jpg"));
//如上所示,显示的图片是固定的大小,如何让图片按我们想要的大小显示呢?
//1,设置Label的大小,如果有布局,会随着布局动态变化
label->setFixedSize(340,180);
//2,设置内容缩放
label->setScaledContents(true);

显示Gif动图

QLabel* label = new QLabel(this);
QMovie *movie = new QMovie("F:/MyCode/QtCode/QtCourse/DisplayWidgets/images/label_gif.gif");
label->setMovie(movie);
movie->start();


11. 进度条(QProgressBar)

简述

QProgressBar提供了一个水平或垂直的进度条,可以使用setMinimum()和setMaximum指定最小和最大步数。当前的步数是用setValue()设置的。进度条可以用reset()重绕到开头。

信号与槽

signals

void valueChanged(int value) //当进度条中显示的值发生变化时,就会发出这个信号。值是进度条显示的新值。

public slots

void reset()                            //重置进度条
void setMaximum(int maximum)            //设置最大值
void setMinimum(int minimum)            //设置最小值
void setOrientation(Qt::Orientation)    //设置进度条方向,垂直方向、水平方向
void setRange(int minimum, int maximum) //设置进度条范围,最大值、最小值
void setValue(int value)                //设置当前值

公有函数

Qt::Alignment alignment() const                              //此属性保存进度条的对齐方式
QString format() const                                       //此属性保存用于生成当前文本的字符串
bool invertedAppearance() const                              //无论进度条是否倒过来显示进度,此属性都保持不变
bool isTextVisible() const                                   //此属性保存是否应显示当前已完成百分比
int maximum() const                                          //这个属性保存进度条的最大值
int minimum() const                                          //这个属性保存进度条的最小值
Qt::Orientation orientation() const                          //此属性保存进度条的方向
void resetFormat()                                           //此属性保存用于生成当前文本的字符串
void setAlignment(Qt::Alignment alignment)                   //设置对齐方式,居中,左、右
void setFormat(const QString &format)                        //设置文本显示格式
void setInvertedAppearance(bool invert)                      //无论进度条是否倒过来显示进度,此属性都保持不变
void setTextDirection(QProgressBar::Direction textDirection) //此属性保存垂直进度条文本的阅读方向
void setTextVisible(bool visible)                            //设置进度条文本是否显示
virtual QString text() const                                 //此属性保存进度条中显示的描述性文本
QProgressBar::Direction textDirection() const                //此属性保存垂直进度条文本的阅读方向
int value() const                                            //此属性保存进度条的当前值


12. 分组框(QGroupBox)

简述

QGroupBox小部件提供带有标题的组框框架。一个组框提供一个框架,一个标题,一个快捷键,并在其内部显示其他各种小部件。键盘快捷键将键盘焦点移到组框的子窗口小部件之一。

QGroupBox还允许您设置标题(通常在构造函数中设置)和标题的对齐方式。组框可以被选中。可选中组框中的子窗口小部件是否启用,取决于是否选中了该组框。

您可以通过启用flat属性来最小化组框的空间消耗。在大多数样式中,启用此属性会导致删除框架的左,右和底边缘。QGroupBox不会自动布置子窗口小部件。QGroupBox框通常用于将QCheckBoxes和QRadioButtons组织到互斥组中。

信号与槽

signals

void clicked(bool checked = false) //当复选框被激活时,或者当键入快捷键时,会发出此信号.
void toggled(bool on)              //如果复选框是可选的,则复选框被选中时发出此信号.

public slots

void setChecked(bool checked) //是否选中了区域框

公有函数

Qt::Alignment alignment() const     //此属性保存组框标题的对齐方式。大多数样式将标题放置在框架的顶部。
bool isCheckable() const            //此属性保存组框的标题中是否有复选框。
bool isChecked() const              //此属性保存是否选中了区域框。
bool isFlat() const                 //此属性保存组框是平绘还是有框架。
void setAlignment(Qt::Alignment)    //此属性保存组框标题的对齐方式。
void setCheckable(bool checkable)   //此属性保存组框的标题中是否有复选框
void setflat(bool flat)             //分组框通常由顶部有标题的包围框组成。如果启用此属性,则大多数样式只绘制框架的顶部部分; 否则,将绘制整个框架。
void setFlat(bool flat)             //此属性保存组框是平绘还是有框架
void setTitle(const QString& title) //设置分组框的标题
QString title() const               //此属性保存组框标题文本

示例:

QGroupBox* groupBox = new QGroupBox(this);
groupBox->move(100,100);
groupBox->resize(320,320);
groupBox->setTitle("我是分组框");
//groupBox->setAlignment(Qt::AlignCenter);
//groupBox->setFlat(true);

groupBox->setCheckable(true);

connect(groupBox,&QGroupBox::clicked,this,[](){qDebug()<<"clicked";});
connect(groupBox,&QGroupBox::toggled,this,[](){qDebug()<<"toggled";});

QList<QCheckBox*> checkBoxs;
for (int i = 0;i<5;i++)
{
    checkBoxs.push_back(new QCheckBox(QString("checkBox%1").arg(i),groupBox));
    checkBoxs[i]->move(10,i*40+20);
}
groupBox->setChecked(true);


13. 堆栈窗口(QStackedWidget)

简述

QStackedWidget继承自QFrame。 QStackedWidget类提供了多页面切换的布局,一次只能看到一个界面。 QStackedWidget可用于创建类似于QTabWidget提供的用户界面。

信号与槽

signals

void currentChanged(int index) //当前页面发生变化时候发射,index为新的索引值
void widgetRemoved(int index)  //页面被移除时候发射,index为页面对应的索引值

public slots

void setCurrentIndex(int index)        //设置索引index所在的页面为当前页面
void setCurrentWidget(QWidget *widget) //设置QWidget页面为当前页面

公有函数

int addWidget(QWidget * widget)               //添加页面,并返回页面对应的索引
int count() const                             //获取页面数量
int currentIndex() const                      //获取当前页面的索引
QWidget * currentWidget() const               //获取当前页面
int indexOf(QWidget * widget) const           //获取QWidget页面所对应的索引
int insertWidget(int index, QWidget * widget) //在索引index位置添加页面
void removeWidget(QWidget * widget)           //移除QWidget页面,并没有被删除,只是从布局中移动,从而被隐藏。
QWidget * widget(int index) const             //获取索引index所对应的页面

示例:

void Dialog::createStackedWidget()
{
    //创建一个QListWidget控件 并向其中添加列表项
    //设置列表框
    leftlist = new QListWidget(this);
    leftlist->insertItem(0,tr("选项1"));
    leftlist->insertItem(1,tr("选项2"));
    leftlist->insertItem(2,tr("选项3"));

    //设置堆栈窗体
    label1 = new QLabel(tr("窗口1"));
    label2 = new QLabel(tr("窗口2"));
    label3 = new QLabel(tr("窗口3"));

    //创建QStackedWidget控件
    stack = new QStackedWidget(this);
    //将控件添加到堆栈窗口中
    stack->addWidget(label1);
    stack->addWidget(label2);
    stack->addWidget(label3);

    //设置主窗体布局
    QHBoxLayout *mainLayout = new QHBoxLayout(this);
    mainLayout->addWidget(leftlist);
    mainLayout->addWidget(stack,0,Qt::AlignHCenter);
    //设置mainLayout的边框与对话框边缘的距离
    mainLayout->setMargin(5);
    mainLayout->setSpacing(5);
    //设定可伸缩控件
    mainLayout->setStretchFactor(leftlist,1);
    mainLayout->setStretchFactor(stack,3);

    //信号与槽链接,实现选择列表项显示对应的窗口
    connect(leftlist,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
}


14. 列表控件(QListWidget)

简述

QListWidget是继承QListView,QListView是基于Model的,需要自己来建模(如建立QStringListModel,QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项。

信号与槽

signals

void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)//每当当前项发生更改时,就会发出此信号。Previous是先前有焦点的项目;Current是新的Current项。
void currentRowChanged(int currentRow)//每当当前项发生更改时,就会发出此信号。currentRow是当前项的行。如果当前项不存在,则currentRow为-1。
void currentTextChanged(const QString &currentText)//每当当前项发生更改时,就会发出此信号。currentText是当前项中的文本数据。如果没有当前项,则currentText无效。
void itemActivated(QListWidgetItem *item)//该信号在物品被激活时发出。根据系统的不同,当用户单击或双击该项时,该项将被激活•配置。当用户按下激活键(在Windows和X11上这是返回键,在Mac OS X上是)时,它也被激活命令+ O)。
void itemChanged(QListWidgetItem *item)//每当项目的数据发生更改时,就会发出此信号。
void itemClicked(QListWidgetItem *item)//当鼠标按钮单击小部件中的项目时,该信号与指定的项目一起发出。
void itemDoubleClicked(QListWidgetItem *item)//当在小部件中的项上双击鼠标按钮时,此信号将随指定项一起发出。
void itemEntered(QListWidgetItem *item)//当鼠标光标进入一个项时发出此信号。项目是输入的项目。只有当mouseTracking打开时,或者当移动到某项时按下鼠标按钮时,才会发出此信号。
void itemPressed(QListWidgetItem *item)//当在小部件中的项目上按下鼠标按钮时,该信号与指定的项目一起发出。
void itemSelectionChanged()//每当选择发生变化时,就会发出此信号。

public slots

void clear()//移除视图中的所有项和选择。“警告:所有项目将被永久删除。
void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)//如果需要,滚动视图以确保项目可见。提示指定操作后项应该位于的位置。

公有函数

void addItem(const QString &label) //在列表小部件的末尾插入带有文本标签的项。
void addItem(QListWidgetItem *item)//将项目插入到列表小部件的末尾。
void addItems(const QStringList &labels)//在列表小部件的末尾插入带有文本标签的项。
void closePersistentEditor(QListWidgetItem *item)//关闭给定项的持久编辑器。
int count() const//此属性保存列表中的项数,包括任何隐藏项。
QListWidgetItem *currentItem() const//返回当前项。
int currentRow() const//此属性保存当前项的行。根据当前的选择模式,还可以选择行。
void editItem(QListWidgetItem *item)//如果项目是可编辑的,则开始编辑它。
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const//使用给定标志查找具有与字符串文本匹配的文本的项。
void insertItem(int row, QListWidgetItem *item)//将项插入到由行给出的列表中的位置。
void insertItem(int row, const QString &label)//在列表小部件中按行指定的位置插入带有文本标签的项。
void insertItems(int row, const QStringList &labels)//从指定行开始,将标签列表中的项插入到列表中。
bool isSortingEnabled() const//此属性保存是否启用排序。如果此属性为true,则为列表启用排序;如果属性为false,则不启用排序。默认值为false。
QListWidgetItem *item(int row) const//如果已设置,则返回占据列表中给定行的项;否则返回0。
QListWidgetItem *itemAt(const QPoint &p) const//返回一个指针,指向位于坐标p处的项。坐标相对于列表小部件的viewport()。
QListWidgetItem *itemAt(int x, int y) const//返回一个指向坐标(x, y)处的项的指针。坐标相对于列表小部件的viewport()。
QWidget *itemWidget(QListWidgetItem *item) const//返回在给定项中显示的小部件。
void openPersistentEditor(QListWidgetItem *item)//为给定的项打开编辑器。编辑器在编辑后保持打开状态。
void removeItemWidget(QListWidgetItem *item)//删除给定项上的小部件集。要从列表中完全删除项(行),可以删除该项或使用takeltem()。
int row(const QListWidgetItem *item) const//返回包含给定项的行。
QList<QListWidgetItem *> selectedItems() const//返回列表小部件中所有选定项的列表。
void setCurrentItem(QListWidgetItem *item)//将当前项设置为项。•除非选择模式为NoSelection,否则该项也会被选中。参见currentltem()。
void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)//使用给定的命令将当前项设置为项。
void setCurrentRow(int row)//使用给定命令将当前行设置为给定行
void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)//使用给定命令将当前行设置为给定行
void setItemWidget(QListWidgetItem *item, QWidget *widget)//设置要在给定项中显示的小部件。
void setSortingEnabled(bool enable)//该属性保存是否启用排序。
void sortItems(Qt::SortOrder order = Qt::AscendingOrder)//根据指定的顺序对列表小部件中的所有项进行排序。
QListWidgetItem *takeItem(int row)//从列表小部件中的给定行中删除并返回项目;否则返回0。从列表小部件中删除的项目不会被Qt管理,需要手动删除。
QRect visualItemRect(const QListWidgetItem *item) const//返回在项处的项所占用的视口中的矩形。

示例:

void Widget::createListWidget()
{
    QListWidget* listwidget = new QListWidget(this);
    listwidget->setFixedSize(450,150);
    //listwidget->show();

    QStringList strList;
    strList<<"张三"<<"李四"<<"王五";
    //1. 添加列表项
    listwidget->addItems(strList);

    //2. 添加列表项
    listwidget->addItem("123");
    listwidget->addItem("abc");
}


15. 树控件(QTreeWidget)

简述

QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与一个典型的基于项目所使用的接口类似QListView Qt 3类。这个类是基于Qt的模型/视图的体系结构,使用一个默认的模型项目,每一个都是一个QTreeWidgetItem。开发人员不需要模型/视图框架的灵活性可以使用这个类来创建简单的分层列表。更灵活的方法是结合QTreeView标准项目模型。这允许存储的数据是与它的表示分离。 在其最简单的形式,一个tree小部件可以构建在以下方式:

信号与槽

signals

void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)//此信号在当前项更改时发出。当前项由current指定,这将替换上一个当前项。
void itemActivated(QTreeWidgetItem *item, int column)//当用户通过单点或双击(取决于平台,即根据QStyle::SH_ItemView_ActivateltemOnSingleClick样式提示)或按一个特殊的键(例如,Enter)激活一个项目时,这个信号就会发出。
void itemChanged(QTreeWidgetItem *item, int column)//当指定项中的列的内容发生更改时发出此信号。
void itemClicked(QTreeWidgetItem *item, int column)//当用户在小部件内部单击时发出此信号。指定的项目是被单击的项目。列是被单击的项的列。如果未单击任何项,则不会发出任何信号。
void itemCollapsed(QTreeWidgetItem *item)//此信号在指定项折叠时发出,以便不显示其子项。注意:当调用崩溃all()时,如果项目改变了它的状态,则不会发出此信号。
void itemDoubleClicked(QTreeWidgetItem *item, int column)//当用户在小部件内部双击时发出此信号。
void itemEntered(QTreeWidgetItem *item, int column)//当鼠标光标进入指定列上的项时发出此信号。需要启用QTreeWidget的鼠标跟踪功能,才能使该功能发挥作用。
void itemExpanded(QTreeWidgetItem *item)//此信号在展开指定项时发出,以便显示其所有子项。
void itemPressed(QTreeWidgetItem *item, int column)//当用户按下小部件内的鼠标按钮时发出此信号。
void itemSelectionChanged()//当树小部件中的选择发生变化时,会发出此信号。可以通过selecteditems()找到当前选择。

public slots

void clear()//通过删除树小部件的所有项和选择来清除树小部件。
void collapseItem(const QTreeWidgetItem *item)//关闭项目。这将导致包含该项的子项目的树被折叠。
void expandItem(const QTreeWidgetItem *item)//扩展项目。这将导致包含该项的子项目的树被展开。
void scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)//确保项目可见,必要时使用指定的提示滚动视图。

公有函数

void addTopLevelItem(QTreeWidgetItem *item)//将项目作为小部件中的顶层项目追加。
void addTopLevelItems(const QList<QTreeWidgetItem *> &items)//将项目列表作为小部件中的顶级项目追加。
void closePersistentEditor(QTreeWidgetItem *item, int column = 0)//关闭给定列中项目的持久编辑器。如果没有为该项和列的组合打开持久编辑器,则此函数将不起作用。
int columnCount() const//此属性保存树小部件中显示的列数。默认情况下,该属性的值为1。
int currentColumn() const//返回树小部件中的当前列。
QTreeWidgetItem *currentItem() const//返回树小部件中的当前项。
void editItem(QTreeWidgetItem *item, int column = 0)//开始编辑给定列中的项目(如果它是可编辑的)。
QList<QTreeWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const//在给定列中使用给定标志返回与给定文本匹配的项列表。
QTreeWidgetItem *headerItem() const//返回用于树小部件头部的项。
int indexOfTopLevelItem(QTreeWidgetItem *item) const//返回给定顶层项的索引,如果找不到该项,则返回-1。
void insertTopLevelItem(int index, QTreeWidgetItem *item)//在视图的顶层插入索引处的项。如果项目已经被插入到其他地方,则不会被插入。在视图的顶层中插入索引处的项列表。已经插入到其他地方的项将不会被插入。
void insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)//在视图的顶层中插入索引处的项列表。已经插入到其他地方的项将不会被插入。
QTreeWidgetItem *invisibleRootItem() const//返回树小部件的不可见根项。
bool isFirstItemColumnSpanned(const QTreeWidgetItem *item) const//如果给定项设置为只显示所有列的一个部分,则返回true;否则返回false。
QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const//返回给定项上面的项。
QTreeWidgetItem *itemAt(const QPoint &p) const//返回一个指针,指向位于坐标p处的项。该坐标相对于树小部件的viewport()。
QTreeWidgetItem *itemAt(int x, int y) const//返回一个指向坐标(x, y)处的项的指针。坐标相对于树小部件的viewport()。
QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const//在给定项的下方可视地返回项。
QWidget *itemWidget(QTreeWidgetItem *item, int column) const//返回在项目和给定列指定的单元格中显示的小部件。
void openPersistentEditor(QTreeWidgetItem *item, int column = 0)//为给定列中的项打开持久编辑器。
void removeItemWidget(QTreeWidgetItem *item, int column)//删除给定列中给定项中的小部件集。
QList<QTreeWidgetItem *> selectedItems() const//返回所有选定的非隐藏项的列表。
void setColumnCount(int columns)//设置树小部件中显示的列数。
void setCurrentItem(QTreeWidgetItem *item)//设置树小部件中的当前项。
void setCurrentItem(QTreeWidgetItem *item, int column)//将树小部件中的当前项和当前列设置为列。
void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command)//使用给定的命令,将树小部件中的当前项和当前列设置为列。
void setFirstItemColumnSpanned(const QTreeWidgetItem *item, bool span)//如果span为true,则设置给定项为所有列只显示一个节;否则,该项目将每列显示一个部分。
void setHeaderItem(QTreeWidgetItem *item)//设置树小部件的头项。标题中每一列的标签由项目中相应的标签提供。树小部件获得该项的所有权。
void setHeaderLabel(const QString &label)//为标签列表中的每个项目在标题中添加一个列,并为每个列设置标签。
void setHeaderLabels(const QStringList &labels)//为标签列表中的每个项目在标题中添加一个列,并为每个列设置标签。注意,setHeaderLabels()不会删除现有的列。
void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)//设置要在给定项和列指定的单元格中显示的给定小部件。
int sortColumn() const//返回用于对小部件内容进行排序的列。
void sortItems(int column, Qt::SortOrder order)//根据给定列中的值按指定顺序对小部件中的项进行排序。
QTreeWidgetItem *takeTopLevelItem(int index)//移除树中给定索引处的顶级项并返回,否则返回O;
QTreeWidgetItem *topLevelItem(int index) const//返回给定索引上的顶层项,如果该项不存在则返回O。
int topLevelItemCount() const//此属性保存顶级项的数量。
QRect visualItemRect(const QTreeWidgetItem *item) const//返回在项处的项所占用的视口中的矩形。

16. 表格控件(QTableWidget)

简述

QTableWidget 是 Qt 中的表格组件类。在窗体上放置一个 QTableWidget 组件后,可以在 Property Editor 里对其进行属性设置,双击这个组件,可以打开一个编辑器,对其 Colum、Row 和 Item 进行编辑。

信号与槽

signals

void cellActivated(int row, int column)//当激活行和列指定的单元格时发出此信号
void cellChanged(int row, int column)//每当由行和列指定的单元格中项目的数据发生更改时,就发出此信号。
void cellClicked(int row, int column)//每当单击表中的单元格时,就会发出此信号。指定的行和列是被单击的单元格。
void cellDoubleClicked(int row, int column)//每当双击表中的单元格时,就会发出此信号。指定的行和列是双击的单元格。
void cellEntered(int row, int column)//当鼠标光标进入单元格时发出此信号。单元格由行和列指定。只有当mouseTracking打开时,或者当移动到某项时按下鼠标按钮时,才会发出此信号。
void cellPressed(int row, int column)//每当按下表中的单元格时,就会发出此信号。指定的行和列是按下的单元格。
void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)//每当当前单元格发生变化时,就会发出此信号。
void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)//每当当前项发生更改时,就会发出此信号。前一项是先前拥有焦点的项,当前项是新的当前项。
void itemActivated(QTableWidgetItem *item)//该信号在指定的项目被激活时发出
void itemChanged(QTableWidgetItem *item)//每当项目的数据发生更改时,就会发出此信号。
void itemClicked(QTableWidgetItem *item)//每当单击表中的项时,就会发出此信号。指定的项就是被单击的项。
void itemDoubleClicked(QTableWidgetItem *item)//每当双击表中的项时,就会发出此信号。指定的项就是双击的项。
void itemEntered(QTableWidgetItem *item)//当鼠标光标进入一个项时发出此信号。项目是输入的项目。
void itemPressed(QTableWidgetItem *item)//每当按下表中的某项时,该信号就会发出。指定的项是按下的项。
void itemSelectionChanged()//每当选择发生变化时,就会发出此信号。

public slots

void clear()//删除视图中的所有项。这也将删除所有的选择项和标题。如果您不想删除标题,请使用QTableWidget..clearContents()。表的尺寸保持不变。
void clearContents()//从视图中移除标题之外的所有项。这也将删除所有的选择。表的尺寸保持不变。
void insertColumn(int column)//将空列插入位于列的表中。
void insertRow(int row)//将空行插入表中。
void removeColumn(int column)//从表中删除列列及其所有项。
void removeRow(int row)//从表中删除行row及其所有项。
void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)//如果需要,滚动视图以确保项目可见。hint参数更精确地指定了操作后项应该位于的位置。

公有函数

QWidget *cellWidget(int row, int column) const//返回在给定行和列的单元格中显示的小部件。
void closePersistentEditor(QTableWidgetItem *item)//关闭项目的持久编辑器。
int column(const QTableWidgetItem *item) const//返回项目的列。
int columnCount() const//返回列数。
int currentColumn() const//返回当前项的列。
QTableWidgetItem *currentItem() const//返回当前项。
int currentRow() const//返回当前项的行。
void editItem(QTableWidgetItem *item)//如果项目是可编辑的,则开始编辑它。
QList<QTableWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const//使用给定的标志查找与文本匹配的项。
QTableWidgetItem *horizontalHeaderItem(int column) const//如果已经设置了列,则返回列的水平标题项;否则返回啊。
QTableWidgetItem *item(int row, int column) const//如果已设置,则返回给定行和列的项;否则返回啊。
QTableWidgetItem *itemAt(const QPoint &point) const//返回指向给定点的项的指针,如果表小部件中的项没有覆盖到点,则返回O。
QTableWidgetItem *itemAt(int ax, int ay) const//返回位于表小部件坐标系中等价于QPoint(ax, ay)位置的项,如果指定的点没有被表小部件中的项覆盖,则返回O。
const QTableWidgetItem *itemPrototype() const//返回表使用的项原型。
void openPersistentEditor(QTableWidgetItem *item)//为给定项打开编辑器。编辑器在编辑后保持打开状态。
void removeCellWidget(int row, int column)//移除行和列指示的单元格上的小部件集。
int row(const QTableWidgetItem *item) const//返回项目的行。
int rowCount() const//返回行数。
QList<QTableWidgetItem *> selectedItems() const//返回所有选定项的列表。
QList<QTableWidgetSelectionRange> selectedRanges() const//返回所有选定范围的列表。
void setCellWidget(int row, int column, QWidget *widget)//设置给定小部件,使其显示在给定行和列的单元格中,并将小部件的所有权传递给表。
void setColumnCount(int columns)//将此表的模型中的列数设置为列。如果该值小于columnCount(),则丢弃不需要的列中的数据。
void setCurrentCell(int row, int column)//将当前单元格设置为位置(行、列)上的单元格。
void setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)//使用给定命令将当前单元格设置为位置(行、列)处的单元格。
void setCurrentItem(QTableWidgetItem *item)//将当前项设置为项。
void setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)//•使用给定的命令将当前项设置为item。
void setHorizontalHeaderItem(int column, QTableWidgetItem *item)//将列column的水平标题项设置为item。如有必要,将增加列计数以适应项目。删除前一个标题项(如果有的话)。
void setHorizontalHeaderLabels(const QStringList &labels)//使用标签设置水平标头标签。
void setItem(int row, int column, QTableWidgetItem *item)//将给定行和列的项设置为项。
void setItemPrototype(const QTableWidgetItem *item)//将表的项原型设置为指定的项。
void setRangeSelected(const QTableWidgetSelectionRange &range, bool select)//根据选择来选择或取消选择范围。
void setRowCount(int rows)//将此表的模型中的行数设置为行。如果该值小于rowCount(),则丢弃不需要的行中的数据。
void setVerticalHeaderItem(int row, QTableWidgetItem *item)//将行row的垂直标头项设置为项。
void setVerticalHeaderLabels(const QStringList &labels)//使用标签设置垂直标头标签。
void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)//根据列和顺序对表小部件中的所有行进行排序。
QTableWidgetItem *takeHorizontalHeaderItem(int column)//从标题栏中删除位于列上的水平标题项而不删除它。
QTableWidgetItem *takeItem(int row, int column)//从表中删除行和列上的项,而不删除它。
QTableWidgetItem *takeVerticalHeaderItem(int row)//从标题中删除行处的垂直标题项而不删除它。
QTableWidgetItem *verticalHeaderItem(int row) const//返回行row的垂直标题项。
int visualColumn(int logicalColumn) const//返回给定logicalColumn的可视列。
QRect visualItemRect(const QTableWidgetItem *item) const//返回在项处的项所占用的视口中的矩形。
int visualRow(int logicalRow) const//返回给定logicalRow的可视行。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值