2016-06-16 1 views
0

버튼을 함수에 연결하려고하는데 무수한 검색 후에 아무 것도 찾을 수 없습니다.버튼을 함수에 연결 QT C++

나는 on_button_clicked (goto 슬롯) 함수를 사용할 수 있지만 더 많은 코드를 실행하기 위해 단추를 다시 할당 할 계획이므로 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++에 좀 새로운 해요 죄송합니다. 설명해주세요.

+0

'setUsername'은'슬롯에 선언해야합니다 : '섹션은 슬롯으로 사용할 수 있습니다. – aschepler

답변

2

연결 형식 :

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 
+0

방금 ​​당신을 도왔습니다 뭉치 좀 도와 줬어요 – Emmanuel

+0

@ Emmanuel upvote 마음에 드십니까? – exilit

+0

어떻게하는지 잘 모르겠다. 이미 해봤다면 오버플로 스택이 생겼다. – Emmanuel