我正在尝试将按钮连接到某个功能,经过无数次搜索后我找不到任何内容。
我可以使用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 ++有点新意,所以如果有人给我一些有用的信息,我可能需要它来向我解释一下,抱歉
答案 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