Qt——常用控件(qt常用控件功能)
Qt常用控件
按钮抽象基类(QAbstractButton)简述
QAbstractButton类是按钮部件的抽象基类,提供了按钮所共有的功能。
QAbstractButton类实现了一个抽象按钮,并且让它的子类来指定如何处理用户的动作,并指定如何绘制按钮。
QAbstractButton提供了点击和勾选按钮。QRadioButton和QCheckBox类只提供了勾选按钮,QPushButton和QToolButton提供了点击按钮,如果需要的话,它们还可以提供切换行为。
任何按钮,都可以显示一个包含文本和图标的标签。
【领更多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 //此属性保存是否启用autoRepeatint 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) //描述如何将弹出菜单与工具按钮一起使用,默认设置为DelayedPopupQt::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()是Normalvoid 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::Horizontalvoid setRange(int min, int max) //设置滑块的最小值为min,最大值为maxvoid 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为新的最大值时,发出这个sianalvoid sliderMoved(int value) //当用户拖动滑块时,被发射void sliderPressed() //用户开始拖动滑块时,被发射void sliderReleased() //当用户释放滑块时,被发射void valueChanged(int value) //当滚动条的值已经发生改变时,被发射
public slots
void setOrientation(Qt::Orientation) //保存滑块的方向 Qt::Vertical or Qt::Horizontalvoid setRange(int min, int max) //设置滑块的最小值为min,最大值为maxvoid 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的可视行。