isDown() 之间的区别是 Checked()

The difference between isDown() isChecked()

本文关键字:Checked 区别 之间 isDown      更新时间:2023-10-16
有什么

区别?我有代码可以使按钮既选中又向下(按下)。在同一个按钮上分别完成这些事情后,我没有注意到差异。视觉效果是相同的(它在窗口上变为蓝色,并在取消单击鼠标后保持如此)。

另外,我还有另一个关于检查按钮的问题。假设我有一个按钮,目前它不在 group1 中(它被注释掉了)并且连接到插槽,使其关闭。同一窗口中有一个文本区域,因此当我按下按钮时,它会在"选中"上更改其名称并且是蓝色的。因此,当我将光标放入文本区域以键入某些内容时,它仍然是蓝色的,已选中。但是如果我再次单击它,它会变为"未选中"但仍然是蓝色的。但是,如果在完成此操作后,我再次在文本区域中键入某些内容,则按钮是白色的,而不是向下的,并且仍然"未选中"。

所以我由此得出结论,您只需单击它即可更改按钮的状态,甚至无需在代码中使用 setChecked(真/假)?

但随之而来的是另一件事。如果我在代码中取消注释带有 group1 的两行并在 gru 中添加 button1,我突然失去了通过鼠标单击检查/取消选中按钮的能力。它一直保持"检查"状态,我想更改它的唯一方法是通过代码。为什么会这样?

   Window5::Window5(QWidget * parent) :QWidget(parent)
  {
    QPushButton * button1=new QPushButton("button1",this);
    connect(button1, SIGNAL(clicked()), this, SLOT(make_pushed()));
    //QButtonGroup * group1=new QButtonGroup(); //currently not in the group
  // group1->addButton(button1);
    QLineEdit * line_area=new QLineEdit(this);
    line_area->setGeometry(500,500,70,20);
    button1->setCheckable(true);
   }
void Window5::make_pushed()
   {

QObject* sender = QObject::sender();
QPushButton* button = qobject_cast<QPushButton*>(sender);
button->setDown(true);
if (button->isChecked())
{
    button->setText("checked");
}
else
{
    button->setText("unchecked");
}

}

isDown() 和 isChecked() 之间的区别如下。当用户单击按钮进行检查时,首先按下该按钮,然后释放到选中状态。

当用户再次单击它(取消选中它)时,按钮首先移动到按下状态,然后移动到未选中状态(isChecked() 和 isDown() 都是假的)。

有关QAbstractButton官方Qt文档的更多详细信息。