qt控件编程(Qt常用控件)

QAbstractButton类是按钮部件的抽象基类,提供了按钮所共有的功能,今天小编就来聊一聊关于qt控件编程?接下来我们就一起去研究一下吧!

qt控件编程(Qt常用控件)

qt控件编程

Qt常用控件
按钮抽象基类(QAbstractButton)简述

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

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

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

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

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

【领更多Qt学习资料,点击下方链接免费领取↓↓,先码住不迷路~】

点击→Qt开发进阶技术栈学习路线和资料

信号与槽

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;}");


【领更多QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】

点击→Qt开发进阶技术栈学习路线和资料

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将接受的输入。这允许您对可能输入的文本施加任意约束。

示例:

设置显示模式

【领更多QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】

点击→Qt开发进阶技术栈学习路线和资料

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("<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页面为当前页面

公有函数

【领更多QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】

点击→Qt开发进阶技术栈学习路线和资料

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<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的可视行。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页