当前位置: 代码迷 >> 综合 >> Qt文档译:QPushButton
  详细解决方案

Qt文档译:QPushButton

热度:44   发布时间:2023-10-30 18:24:47.0

0.详细介绍

QPushButton类提供了一个命令的按钮.它可以说是图形界面中最常用的控件之一了.点击按钮来执行一些计算机的命令,或者回答一些问题.常用的按钮有:OK, Apply, Cancel, Close, Yes, No and Help等.按钮通常是矩形的,在按钮上通过文本来显示描述它的动作作用.可以在按钮的文本中使用’&’来给该按钮设置快捷键.比如:

//快捷键为alt+d.
QPushButton *button = new QPushButton("&Download", this);

按钮上可以显示一个文本标签,也可以设置一个图标.这些可以通过构造函数来设置,也可以随时调用setText()和setIcon()进行设置.

如果按钮是禁用的,也就是未被激活的,则文本和图标的外观默认呈现的是灰色的,看起来就好像是禁用的.

当鼠标点击按钮,快捷键按下按钮时,按钮会发出clicked()信号.我们需要让执行的动作与这个信号连接起来.按钮类也提供了pressed()和released()等较少使用的方法,常用的是clicked()方法,当手动调用后相当于发出信号被的操作.也就是emit操作.

常用的模式情况:

Available or not (grayed out, disabled).//禁用的.
Standard push button, toggling push button or menu button.标准按钮,按下和菜单按钮.
On or off (only for toggling push buttons).//切换开关.
Default or normal. The default button in a dialog can generally be "clicked" using the Enter or Return key.//正常还是默认.默认情况则可以直接被空格或Enter回车键触发.
Auto-repeat or not.//是否可以重复触发.
Pressed down or not.//是否按下.

通常来说,如果是正方形的按钮,且是为了修改一些状态(如QFileDialog右上角的按钮等)使用的都是QToolButton工具按钮.Qt为按钮类提供了一个特殊的QToolButton按钮类.

如果你想要按钮能够支持按下和弹起操作,可以使用setCheckable()方法来进行设置.或者希望通过鼠标一直按下,重复激活信号,可以调用setAutoRepeat()方法.但是QPushButton可能不是最好的选择,最好还是使用QToolButton类.

菜单按钮也是QPushButton按钮的一个变体.它不单单只提供了一种命令动作,而是好多个,当它被点击的时候会弹出一个菜单,我们可以通过调用setMenu()方法来设置弹出的菜单.

除此之外的按钮类常用选择控件还有QCheckButton和QRadioButton等.

1.常用方法介绍

  • 1.1
    :在QDialog中,autoDefault属性决定了按下Enter能否产生反应,而default属性决定了按下空格键能否产生反应.但有时设置了default的按钮也能相应Enter.而在QWidget和主窗体中不必纠结default和autoDefault属性.
    bool autoDefault() const
    void setAutoDefault(bool)
    bool isDefault() const
    void setDefault(bool)

  • 1.2
    该属性控制按钮是否不需要默认显示边框.默认是false的,表示一直显示边框…如果它被设置为true.则该按钮是不会显示四周的边框的,除非你按下它才显示.表象和QLabel类似,当你按下时才会显示边框~
    bool isFlat() const
    void setFlat(bool)

  • 1.3:
    作为菜单按钮来使用,当点击的时候显示菜单.一般来说,会在按钮名或者图标旁边出现一个小三角来表示这是一个菜单按钮.并且菜单的所有权没有转移到按钮上.
    QMenu * menu() const
    void QPushButton::setMenu(QMenu * menu)

    QPushButton *button = new QPushButton(this);button->move(100,100);button->setText("Language");button->adjustSize();//创建菜单.QMenu *menu = new QMenu();QAction *action1 = new QAction("C++",this);QAction *action2 = new QAction("Java", this);QAction *action3 = new QAction("Python", this);menu->addAction(action1);menu->addAction(action2);menu->addAction(action3);设置按钮为菜单按钮.button->setMenu(menu);

这里写图片描述
其他函数见QAbstractButton基类.

2.信号与槽

signals:

//按钮被点击发出信号.
void clicked(bool checked = false)
2.
//按钮被按下发出信号.
void pressed()
3.
//按钮被释放出信号.
void released()
4.
//按钮被按下或者释放都发出信号.
void toggled(bool checked)

slots:


  1. //显示菜单.如果没有设置菜单,就不显示呗.
    void showMenu()

  2. //执行按下按钮指定时间的操作.前提是设置了setAutoRepeat(true);
    void animateClick(int msec = 100)

  3. //执行点击按钮的操作.
    void click()

  4. //设置是否被选中.
    void setChecked(bool)

  5. //修改图标的尺寸.
    void setIconSize(const QSize & size)

  6. //执行切换操作.
    void toggle()