Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将bool变量链接到c++;qt?_C++_Qt - Fatal编程技术网

C++ 如何将bool变量链接到c++;qt?

C++ 如何将bool变量链接到c++;qt?,c++,qt,C++,Qt,我正在处理一个项目,在第一次单击按钮后,以前隐藏的一些标签和线条编辑将被取消隐藏。之后,第二次点击按钮,我想再次隐藏标签 我已经编写了以下代码并使用了bool变量,但什么也没发生 这是我的密码: dialog.h: #ifndef DIALOG_H #define DIALOG_H #include <QDialog> namespace Ui { class Dialog; } class Dialog : public QDialog { Q_OBJECT publi

我正在处理一个项目,在第一次单击按钮后,以前隐藏的一些标签和线条编辑将被取消隐藏。之后,第二次点击按钮,我想再次隐藏标签

我已经编写了以下代码并使用了bool变量,但什么也没发生

这是我的密码: dialog.h:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
  Q_OBJECT

public:
 explicit Dialog(QWidget *parent = 0);
 ~Dialog();

 private slots:
  void on_pushButton_clicked();

  void on_pushButton_2_clicked();

private:
  Ui::Dialog *ui;
  bool bForButton ;
};

#endif // DIALOG_H

将按钮内的逻辑移动到自己的方法。然后:

  • 在按钮的on_click槽中调用该方法
  • 链接(带信号槽)布尔标志的方法

  • 只需将以下两行添加到对话框构造函数中:

    Dialog::Dialog(QWidget *parent) :
     QDialog(parent),
     ui(new Ui::Dialog)
    {
      bForButton = false;
      ui->setupUi(this);
      ui->label->setVisible(false);
      ui->label_2->setVisible(false);
      ui->lineEdit->setVisible(false);
      ui->lineEdit_2->setVisible(false);
      ui->label_3->setVisible(false);
      ui->pushButton_2->setVisible(false);
    
      // Add connections between signals and slots
      connect(ui->pushButton, &QPushButton::clicked, this, &Dialog::on_pushButton_clicked);
      connect(ui->pushButton_2, &QPushButton::clicked, this, &Dialog::on_pushButton_2_clicked);
     }
    
    这些将在按钮生成的信号和Dialog类中提供的函数之间建立连接

    然后使用布尔标志控制小部件的可见性:

    void Dialog::on_pushButton_clicked()
    {
     bForButton = !bForButton;
    
     ui->label->setVisible(bForButton);
     ui->label_2->setVisible(bForButton);
     ui->lineEdit->setVisible(bForButton);
     ui->lineEdit_2->setVisible(bForButton);
     ui->label_3->setVisible(bForButton);
     ui->pushButton_2->setVisible(bForButton);
    }
    

    让你的按钮可以检查怎么样<代码>QAbstractButton::setCheckable()。应该发生什么?你只是切换布尔值,你没有打印它,你根本没有使用它。我的主要问题是如何使用布尔值。代码运行良好(当我单击push_按钮时,标签将被取消隐藏,当我单击push_按钮时,它与两个数字的乘法有关,也运行良好)。唯一不起作用的部分是,当我第二次单击push_按钮以再次隐藏标签时(当我第二次单击push_按钮时,所有标签都保留下来,但我的目标是再次隐藏它们),实际上代码工作得很好(当我点击push_按钮时,标签将被取消隐藏,当我点击push_按钮2时,它与两个数字的乘法有关,也可以正常工作)。唯一不起作用的部分是当我第二次点击push_按钮时,为了再次隐藏标签(当我第二次单击按钮时,所有标签都会保留,但我的目标是再次隐藏它们)。好的,您提供的代码没有连接部分。据我所知,您反转了标志,但没有使用它。我更新了我的答案以显示使用它。希望这会有帮助!非常感谢!它现在运行良好。我非常感谢您的帮助。请您解释有关布尔部分的更多信息,好吗?(当我点击push_按钮时,标签将被取消隐藏,当我点击push_按钮2时,它与两个数字的乘法有关,也可以正常工作)。唯一不起作用的部分是当我第二次点击push_按钮时,为了再次隐藏标签(当我第二次单击按钮时,所有标签都会保留,但我的目标是再次隐藏它们)
    void Dialog::on_pushButton_clicked()
    {
     bForButton = !bForButton;
    
     ui->label->setVisible(bForButton);
     ui->label_2->setVisible(bForButton);
     ui->lineEdit->setVisible(bForButton);
     ui->lineEdit_2->setVisible(bForButton);
     ui->label_3->setVisible(bForButton);
     ui->pushButton_2->setVisible(bForButton);
    }