I've written a network chat client in C and (for fun) I'm learning Qt with the eventual goal of writing a GUI for the chat program.
I'm sort of loosely following the structure of a GUI chat program, but I'm not worrying about connecting up the network code yet - just trying to understand signals and slots.
So I've (tried) to write a program with an output window, an input window, and a submit button. ALL I want the program to do is echo anything written in the input window to the display window when the submit button is pressed. I think it's clear what I'm trying to do by looking at the code, I'm just doing it wrong obviously.
#include <QApplication>
#include <QPushButton>
#include <QLineEdit>
#include <QTextEdit>
#include <QVBoxLayout>
{
public:
};
{
output->setReadOnly(true);
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
connect(submit, SIGNAL(clicked()), output, SLOT(append(input->text())));
layout->addWidget(quit);
layout->addWidget(output);
layout->addWidget(input);
layout->addWidget(submit);
setLayout(layout);
}
int main(int argc, char **argv)
{
MyWidget widget;
widget.show();
return app.exec();
}
#include <QApplication>
#include <QPushButton>
#include <QLineEdit>
#include <QTextEdit>
#include <QVBoxLayout>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = 0);
};
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
QPushButton *quit = new QPushButton("Quit", this);
QPushButton *submit = new QPushButton("Submit", this);
QLineEdit *input = new QLineEdit;
QTextEdit *output = new QTextEdit;
output->setReadOnly(true);
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
connect(submit, SIGNAL(clicked()), output, SLOT(append(input->text())));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(quit);
layout->addWidget(output);
layout->addWidget(input);
layout->addWidget(submit);
setLayout(layout);
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
It compiles cleanly, but when it runs I get the error
Object
::connect: No such
slot QTextEdit::append(input
->text
()) in main2.
cpp:24
Object::connect: No such slot QTextEdit::append(input->text()) in main2.cpp:24
To copy to clipboard, switch view to plain text mode
EDIT: Here is the offending line from what I have been told
connect(submit, SIGNAL(clicked()), output, SLOT(append(input->text())));
connect(submit, SIGNAL(clicked()), output, SLOT(append(input->text())));
To copy to clipboard, switch view to plain text mode
What gives? According to here, append *is* a slot. Why can't I use it? What am I missing?
Thanks, Benjamin
Bookmarks