我最近开始在Qt for C ++中进行开发,因为我想更多地跨平台并使用gui开发应用程序。我正在尝试从用户输入的lineEdit中获取文本,按下一个按钮,然后该按钮切换显示以在标签中显示相同的文本。值得注意的是,我正在QT Creator中进行开发,因为我现在无法访问Windows桌面。 mainWindow.hpp文件实际上是默认文件,但我刚刚添加了“公共插槽”以将对象链接在一起。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void setText();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
main.cpp完全没有改变。
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainWindow.cpp可能是最重要的文件,这就是我认为存在的问题。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->textBtn, SIGNAL(clicked(bool)), this, SLOT(setText()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::setText()
{
QString temp;
ui->inputText->textChanged(temp);
ui->displayLabel->setText(temp);
}
我不知道怎么了。编译器可以正确构建程序,但是如果我按该按钮,则什么也没有发生。就setText()函数而言,我做错什么了吗?或者是信号和插槽连接?
答案 0 :(得分:1)
只需将setText函数更改为
void MainWindow::setText()
{
QString temp = ui->inputText->text();
ui->displayLabel->setText(temp);
}