有什么区别?我有代码使按钮既选中又按下(按下)。在同一个按钮上分别完成这些事情后,我没有注意到有什么不同。视觉效果是一样的(在windows上变成蓝色,松开鼠标后就这样)。
此外,我还有一个关于检查按钮的问题。假设我有一个按钮,目前它不在 group1 中(它被注释掉了)并且连接到 SLOT,这使得它被关闭。在同一个窗口中有一个文本区域,所以当我按下按钮时,它会在“选中”上更改它的名称并且是蓝色的。因此,当我将光标放入文本区域以键入内容时,它仍然是蓝色的,已选中。但是如果我再次点击它,它会变成“未选中”但仍然是蓝色的。但是,如果在完成之后我再次在我的文本区域中键入内容,该按钮将是白色的,而不是按下并且仍然“未选中”。
因此我由此得出结论,您只需单击按钮即可更改按钮的状态,甚至无需在代码中使用 setChecked(true/false)?
但随后又发生了另一件事。如果我在代码中取消注释带有 group1 的两行并在组中添加 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() 都是 false)。
有关 official Qt documentation of QAbstractButton 的更多详细信息.
关于c++ - isDown() 与 isChecked() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36815824/