Возникла такая проблема - не могу передать текст из QLineEdit
в QLabel
. Не знаю, почему, вроде все сделал правильно, но вот не работает.
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <form.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
signals:
void sendData(QString str);
private slots:
void onButtonSend();
private:
Ui::MainWindow *ui;
Form *myform;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
myform = new Form;
connect(ui->pushButton, SIGNAL(clicked()), myform, SLOT(show()));
connect(ui->pushButton, SIGNAL(clicled()), this, SLOT(onButtonSend()));
connect(this, SIGNAL(sendData(QString)), myform, SLOT(recieveData(QSstring)));
}
void MainWindow::onButtonSend()
{
emit sendData(ui->lineEdit->text());
}
MainWindow::~MainWindow()
{
delete ui;
}
form.h
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = nullptr);
~Form();
private:
Ui::Form *ui;
private slots:
void recieveData(QString str);
};
#endif // FORM_H
form.cpp
#include "form.h"
#include "ui_form.h"
#include <QStringList>
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
}
void Form::recieveData(QString str)
{
QStringList lst = str.split(" ");
if(lst.size() > 0) ui->label->setText(lst.at(0));
if(lst.size() > 1) ui->label_2->setText(lst.at(1));
if(lst.size() > 2) ui->label_3->setText(lst.at(2));
}
Form::~Form()
{
delete ui;
}
У вас опечатка в названии сигнала - во втором коннекте clicled
вместо clicked
. В консоли вывода приложения вам должно было об этом написать.
Если вы используете Qt5, рекомендую использовать "новый" синтаксис функции connect - на указателях на функцию. В этом случае ошибки будут определяться при компиляции, а не в рантайме.
Для преобразования "старого" синтаксиса в "новый" в креаторе можно встать на строку с функцией connect, нажать Alt+Enter и выбрать из всплывшего списка что-то типа "преобразовать в синтаксис Qt5"
Спасибо. Переделал в mainwindow.cpp connect в новую форму, и высветилась ошибка что recieve data является приватным слотом. Соответственно перенес и private slots в publick, и все заработало! Вот собственно код.
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
myform = new Form;
connect(ui->pushButton, &QAbstractButton::clicked, myform, &QWidget::show);
connect(ui->pushButton, &QAbstractButton::clicked, this, &MainWindow::onButtonSend);
connect(this, &MainWindow::sendData, myform, &Form::recieveData);
}
void MainWindow::onButtonSend()
{
emit sendData(ui->lineEdit->text());
}
MainWindow::~MainWindow()
{
delete ui;
}
form.h
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = nullptr);
~Form();
void recieveData(QString str);
private:
Ui::Form *ui;
};
#endif // FORM_H
Виртуальный выделенный сервер (VDS) становится отличным выбором
Сделать запрос к сайту, полученную инфу записать в файл или если json распарсить
Воспроизвести несколько видео файлов (из интернета) в vlc playerВ mx player есть такое - video_list
Имеется сервер и клиентСервер может обрабатывать сразу несколько клиентов,но если клиенты закрываются,и заново подключаются то ничего не происходит
не получается сделать так, чтобы выводились именно строки с длинной меньше средней, не понимаю, как реализовать такую ф-циюДлинны я уже посчитал,...