QT·Qt常用控件

目录

Qt常用控件 

按钮抽象基类(QAbstractButton)

1. 推动按钮(QPushButton)

2. 工具按钮(QToolButton)

3. 单选按钮(QRadioButton)

4. 复选框(QCheckBox)

5. 组合框(QComboBox)

6. 行编辑器(QLineEdit)

7. 旋转框(QSpinBox)

9. 滚动条(QScrollBar)

10. 标签(QLabel)

11. 进度条(QProgressBar)

12. 分组框(QGroupBox)

13. 堆栈窗口(QStackedWidget)

14. 列表控件(QListWidget)

15. 树控件(QTreeWidget)

16. 表格控件(QTableWidget)


Qt常用控件 

按钮抽象基类(QAbstractButton)

简述

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

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

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

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

  • setText(const QString&) 设置文本

  • setIcon(const QIcon&) 设置图标

信号与槽

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"<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::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()。


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);              //启用清除按钮

设置输入掩码

掩码字符 含义
A ASCII字母字符是必须的,A-Z,a-z
a ASCII 字母字符是允许的但不是必须的
N ASCII字母字符是必须的,A-Z,a-z, 0-9
n ASCII 字母字符是允许的但不是必须的
X 任何字符都可以,是必须需要的
x 任何字符都允许的,但不是必须需要的
9 ASCII 数字是必须要的,0-9
0 ASCII 数字是允许的,但不是必须要的
D ASCII 数字是必须要的,1-9
d ASCII 数字是允许的,但不是必须要的
# 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.


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("百度一下");
connect(label,&QLabel::linkHovered,this,[=](const QString& link){qDebug()<<"linkHovered"<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 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 ¤tText)//每当当前项发生更改时,就会发出此信号。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 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 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 &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 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 &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 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 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 selectedItems() const//返回所有选定项的列表。
QList 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学习,QT,qt5)