将按钮连接到QT c ++功能

时间:2016-06-16 00:51:52

标签: qt

我正在尝试将按钮连接到某个功能,经过无数次搜索后我找不到任何内容。

我可以使用on_button_clicked(goto slot)函数,但我打算重新分配按钮以运行更多代码,所以我决定使用connect()类,但是当我运行应用程序时,当我输入时没有任何反应文本框,然后单击我创建的game_user_input_submit按钮,我不确定它是否甚至调用该函数。

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QtCore>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

    ui->setupUi(this);
    user_name_set = false;
    ui->game_chat_box->append("hi"); // a text edit box i created
    if(user_name_set == false)
    {
        connect(ui->game_user_input_submit, SIGNAL(clicked()), SLOT(setUsername()));
    }

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::setUsername()
{
    username =  ui->game_user_input->text(); // get text from line edit i created
    user_name_set = true;
    ui->game_chat_box->append("BOT: Welcome " + username);
}

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QString>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    void setUsername();
    ~MainWindow();

private slots:
    //void on_game_user_input_submit_clicked();

private:
    bool user_name_set = false;
    QString username;
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

哦,我对一般编程c ++有点新意,所以如果有人给我一些有用的信息,我可能需要它来向我解释一下,抱歉

1 个答案:

答案 0 :(得分:2)

connect应为以下形式:

connect(object_pointer,  signal_name, slot_name)

在您的情况下,您将插槽名称设置为setUsername(),它不是插槽 - 它只是一个公共功能。

你的mainwindow.h应该是:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QString>

namespace Ui {
  class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void setUsername();

private:
    bool user_name_set = false;
    QString username;
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H