有什么关系呢?我有代码,使按钮既检查又向下(按)。在同一个按钮上分别做了这些事情后,我没有注意到有什么不同。视觉效果是一样的(它在窗口上变成蓝色,并在鼠标被松开后保持这样的状态)。
另外,我还有一个关于检查按钮的问题。假设我有一个按钮,现在它不在group1中(它被注释掉了),并连接到插槽,这使得它被击落。在同一个窗口中有一个文本区域,所以当我按下按钮时,它会更改它在"checked“上的名称,并且是蓝色的。所以,当我在文本区域中放置一个光标来键入某些内容时,它仍然是蓝色的,选中。但是如果我再一次点击它,它会变成“未经检查的”,但仍然是蓝色的。但是,如果在完成该操作之后,我再次在文本区域中键入了一些内容,则按钮是白色的,不是向下的,仍然是“未选中的”。
因此,我由此得出结论,您只需单击按钮,就可以更改按钮的状态,甚至无需在代码中使用setChecked(true/false)?
但接下来是另一件事。如果我取消了代码中使用group1的两行注释,并在grou中添加了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");
}}
发布于 2016-04-23 20:16:16
isDown()和isChecked()之间的区别如下。当用户单击一个按钮来检查它时,该按钮首先按下,然后释放到检查状态。
当用户再次单击它(要取消它)时,按钮首先移动到按下状态,然后移动到未检查状态(isChecked()和isDown()都是false)。
关于QAbstractButton的正式Qt文档的更多细节。
https://stackoverflow.com/questions/36815824
复制相似问题