Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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++ 将QPushButton::clicked信号连接到插槽时出错_C++_Qt - Fatal编程技术网

C++ 将QPushButton::clicked信号连接到插槽时出错

C++ 将QPushButton::clicked信号连接到插槽时出错,c++,qt,C++,Qt,首先,我使用for循环创建了大约20个按钮。并使用if-else循环命名它们。现在,我想用新对话框连接每个按钮。如果我使用了QT的设计模式,当我按下connect(ui->button_0,SIGNAl(released()),SLOT(digital_pressed())类似的按钮时,它会显示按钮的名称。但是,我不知道作为for和If else循环的按钮的名称。connect(ui->……)也不会显示任何预测。我如何链接这些按钮和新对话框 这是我的密码: 主窗口 \ifndef主窗口 #定义主

首先,我使用for循环创建了大约20个按钮。并使用if-else循环命名它们。现在,我想用新对话框连接每个按钮。如果我使用了QT的设计模式,当我按下
connect(ui->button_0,SIGNAl(released()),SLOT(digital_pressed())
类似的按钮时,它会显示按钮的名称。但是,我不知道作为for和If else循环的按钮的名称。
connect(ui->……)
也不会显示任何预测。我如何链接这些按钮和新对话框

这是我的密码:

主窗口
\ifndef主窗口
#定义主窗口
#包括
名称空间用户界面{
类主窗口;
}
类主窗口:公共QMainWindow
{
Q_对象
公众:
显式主窗口(QWidget*parent=0);
~main窗口();
私人:
Ui::MainWindow*Ui;
专用插槽:
单击按钮时无效();
};
#endif//main窗口
mainwindow.cpp
#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
#包括
#包括“截肢.h”
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
连接(ui->)
QPixmap pix(“/home/skanda/Desktop/D4564.png”);
ui->label_2->setPixmap(pix);
setWindowTitle(“急救”);
QVBoxLayout*lay=新的QVBoxLayout();
int i;
for(i=0;iaddWidget(按钮);
}
else如果(i==1){
QPushButton*按钮=新的QPushButton(“Asthama”);
lay->addWidget(按钮);
}
else如果(i==2){
QPushButton*按钮=新的QPushButton(“出血”);
lay->addWidget(按钮);
}
else如果(i==3){
QPushButton*按钮=新的QPushButton(“Burns”);
lay->addWidget(按钮);
}
else如果(i==4){
QPushButton*按钮=新的QPushButton(“胸痛”);
lay->addWidget(按钮);
}
else如果(i==5){
QPushButton*按钮=新的QPushButton(“腹泻”);
lay->addWidget(按钮);
}
else如果(i==6){
QPushButton*按钮=新的QPushButton(“溺水”);
lay->addWidget(按钮);
}
else如果(i==7){
QPushButton*按钮=新的QPushButton(“癫痫”);
lay->addWidget(按钮);
}
else如果(i==8){
QPushButton*按钮=新的QPushButton(“晕厥”);
lay->addWidget(按钮);
}
else如果(i==9){
QPushButton*按钮=新的QPushButton(“发烧”);
lay->addWidget(按钮);
}
否则如果(i==10){
QPushButton*按钮=新的QPushButton(“食物中毒”);
lay->addWidget(按钮);
}
else如果(i==11){
QPushButton*按钮=新的QPushButton(“断裂”);
lay->addWidget(按钮);
}
否则如果(i==12){
QPushButton*按钮=新的QPushButton(“头部受伤”);
lay->addWidget(按钮);
}
否则如果(i==13){
QPushButton*按钮=新的QPushButton(“肌肉拉伤”);
lay->addWidget(按钮);
}
否则如果(i==14){
QPushButton*按钮=新的QPushButton(“无呼吸”);
lay->addWidget(按钮);
}
否则如果(i==15){
QPushButton*按钮=新的QPushButton(“鼻出血”);
lay->addWidget(按钮);
}
else如果(i==16){
QPushButton*按钮=新的QPushButton(“中毒”);
lay->addWidget(按钮);
}
否则如果(i==17){
QPushButton*按钮=新的QPushButton(“蛇咬”);
lay->addWidget(按钮);
}
否则如果(i==18){
QPushButton*按钮=新的QPushButton(“笔划”);
lay->addWidget(按钮);
}
否则如果(i==19){
QPushButton*按钮=新的QPushButton(“晒黑”);
lay->addWidget(按钮);
}
否则如果(i==20){
QPushButton*按钮=新的QPushButton(“睾丸疼痛”);
lay->addWidget(按钮);
}
否则如果(i==21){
QPushButton*按钮=新的QPushButton(“溃疡”);
lay->addWidget(按钮);
}
否则如果(i==22){
QPushButton*button=新的QPushButton(“儿童删除”);
lay->addWidget(按钮);
}
否则如果(i==23){
QPushButton*按钮=新的QPushButton(“心脏病发作”);
lay->addWidget(按钮);
}
否则{
QPushButton*按钮=新的QPushButton(“胃”);
lay->addWidget(按钮);
}
}
用户界面->滚动内容->设置布局(布局);
}
MainWindow::~MainWindow()
{
删除用户界面;
}
void主窗口::在按钮上单击(){
截肢放大器;
amp.setModal(真);
amp.show();
}
**在这些代码中,我通过在按钮上创建
函数来尝试我的运气。但是,这只是一次尝试**

  • 使所有这些
    QPushButton
    成员成为一个类,以便正确地创建和销毁它们,而不是在循环中创建它们

  • 一旦您将每一个都作为单独的成员,那么就有一个方法
    InitializeConnections()
    ,并使用Qt-connect语法建立它下面的所有连接

  • 如果您认为这些按钮是
    main窗口
    类的一部分,那么您的类可以如下所示:

    class MainWindow{
        ...
        ...
        private :
          // Will make connections of each button to it's respective slot.
          void InitializeConnections();
    
        private :
          QPushButton *mAmputationButton;
          QPushButton *mAsthmaButton;
        //.. so on
    };
    
    main window.cpp
    中:

    #include <QPushButton>
    #include <QVBoxLayout>
    
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    mAmputationButton(new QPushButton("Amputation") ),
    mAsthmaButton(new QPushButton("Asthama") )
    {
       InitializeConnections();
    }
    
    void MainWindow::InitializeConnections()
    {
       connect(mAmputationButton, &QPushButton::clicked, this, &MainWindow::amputation_slot );
       connect(mAsthmaButton, &QPushButton::clicked, this, &MainWindow::asthma_slot );
      // same way for others.
    }
    
    #包括
    #包括
    主窗口::主窗口(QWidget*父窗口):
    QMainWindow(父级),
    ui(新ui::主窗口),
    mAmputationButton(新的QPushButton(“截肢”),
    mAsthmaButton(新QPushButton(“阿斯塔玛”))
    {
    初始化连接();
    }
    void MainWindow::InitializeConnections()
    {
    连接(mAmputationButton、&QPushButton::clicked、this、&MainWindow::截肢\u插槽);
    连接(mAsthmaButton,&QPushButton::clicked,this,&main窗口::slot)
    
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
       
    class QPushButton;
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        QPushButton *mAmputationButton;
        QPushButton *mAsthmaButton;
    
    private slots:
        void on_pushButton_clicked();
    
    };
    
    #include "MainWindow.h"
    #include <QPushButton>
    #include <QVBoxLayout>
    #include <QDialog>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        mAmputationButton( new QPushButton("Amputation" ) ),
        mAsthmaButton( new QPushButton("Astham" ) )
    {
        setWindowTitle("First Aid");
    
        QWidget *sampleWidget = new QWidget();
        QVBoxLayout *lay = new QVBoxLayout();
        lay->addWidget(mAmputationButton);
        connect(mAmputationButton, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked );
        connect(mAsthmaButton, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked );
        lay->addWidget(mAsthmaButton);
        sampleWidget->setLayout(lay);
        setCentralWidget(sampleWidget);
    }
    
    MainWindow::~MainWindow(){}
    
    void MainWindow::on_pushButton_clicked(){
        QDialog *sampleDialog = new QDialog();
        sampleDialog->setModal(true);
        sampleDialog->show();
    }
    
    connect(sender, &Sender::signal, receiver, &Receiver::slot);
    
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QPushButton>
    #include <QVBoxLayout>
    #include "amputation.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
    
        QPixmap pix("/home/skanda/Desktop/D4564.png");
        ui->label_2->setPixmap(pix);
        setWindowTitle("First Aid");
    
        QVBoxLayout *lay = new QVBoxLayout();
        QStringList names{"Amputation", "Asthama", "Bleeding", "Burns", "Chest Pain",
                          "Drowning", "Diarrhoea", "Epilepsy", "Fainting", "Fever",
                          "Food Poisoning", "Fracture", "Head Injury", "Muscle Strain",
                         "No breathing", "Nose bleed", "Poisoning", "Snake Bites",
                          "Stroke","Sun Burn", "Testicle Pain", "Ulcer", "Child delievery",
                          "Heart Attack", "Gastric"};
        for(const QString & name: names)
        {
            QPushButton *button = new QPushButton(name);
            lay->addWidget(button);
            connect(button, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked)
    
        }
        ui->scrollContents->setLayout(lay);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_pushButton_clicked(){
        Amputation amp;
        amp.setModal(true);
        amp.show();
    }