違いは何ですか?ボタンをチェックしたり、押したりするコードがあります。同じボタンでこれらのことを別々に行っても、私は違いに気づいていません。視覚効果は同じです(ウィンドウが青色になり、マウスがクリックされていない場合はこのままです)。isDown()isChecked()の違い
また、私はボタンのチェックに関して別の質問があります。 1つのボタンがあり、現時点ではグループ1にはない(コメントアウトされています)、SLOTに接続されています。同じウィンドウ内にテキストエリアがあるので、ボタンを押すと "checked"の名前が変わり、青色に変わります。だから私が何かを入力するためにカーソルをテキスト領域に置くと、それはまだ青色でチェックされています。しかし、もう一度クリックすると「未チェック」になりますが、まだ青です。しかし、それをやった後にもう一度テキスト領域に何かを入力すれば、ボタンは白で、下ではなく「未チェック」です。
これで、コード内でsetChecked(true/false)を使用しなくても、ボタンの状態をクリックするだけでボタンの状態を変更できます。
しかし、別のことが来ます。コード内でgroup1で2行のコメントを外し、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");
}
}
ボタンがチェックされているときに、それがチェックされていないときだけでなく、ダウンでもないという意味ですか? – parsecer
違いはごくわずかです。ユーザーがボタンをクリックしてチェックすると、releaseイベントが発生するとisCheckedがtrueになり、releaseイベントが発生する前にisDownがtrueになると、pressイベントが発生します。ユーザーが再度クリックすると、isCheckedとisDownが同時にtrueになります。 –