У меня есть один QWidget (keyboardW)
и один QDialog (pacsD)
, которые реализованы отдельно, и оба одновременно открываются / представляются на моем QMainWindow
, если я запускаю QPushButton
на моем QMainWindow
. keyboardW
представляет виртуальную клавиатуру, а pacsD
содержит некоторое значение QLineEdit's
, которое должно быть заполнено, если пользователь что-то пишет на клавиатуре. Я реализовал функциональность как следовать. Проблема: если keyboardW
испускает сигнал с QString
, слот transmitOutputTextSlot()
в классе pacsD
получает его с правильным содержимым. Но текст не представлен на lineEdit
. Я попробовал функции setFocus()
и repaint()
. Безуспешно.
КлавиатураW.h
namespace int::Mic::Manager {
class PacsD;
class KeyboardW: public QObject, public Ui::keyboardW
{
Q_OBJECT
public:
KeyboardW(QWidget *parent= 0);
~KeyboardW();
QWidget *getKeyboardW(){ return m_KeyboardW; }
signals:
void transmitOutputTextSignal(QString);
private slots:
void setTextSlot();
private:
PacsD *m_PacsD;
QPointer<QWidget> m_KeyboardW;
void init();
QString m_OutputText;
};
}
КлавиатураW. cpp
namespace int::Mic::Manager {
KeyboardW::KeyboardW(QWidget *parent) : QObject(parent)
{
m_KeyboardW = QPointer<QWidget>(new QWidget());
setupUi(m_KeyboardW);
init();
}
void KeyboardW::init()
{
m_PacsD = new PacsD;
connect(this, SIGNAL(transmitOutputTextSignal(QString)), m_PacsD, SLOT(transmitOutputTextSlot(QString)));
}
void KeyboardW::setTextSlot()
{
// m_OutputText contains what I have written on the virtual keyboard
emit transmitOutputTextSignal(m_OutputText);
}
}
PacsD.h
#pragma once
namespace int::Mic::Manager {
class PacsD: public QObject, public Ui::pacsD
{
Q_OBJECT
public:
PacsD(QDialog *parent= 0);
~PacsD();
QDialog *getPacsD(){ return m_PacsD; }
public slots:
void transmitOutputTextSlot(QString);
private:
QPointer<QDialog> m_PacsD;
};
}
PacsD. cpp
namespace int::Mic::Manager {
PacsD::PacsD(QDialog *parent) : QObject(parent)
{
m_PacsD = QPointer<QDialog>(new QDialog());
setupUi(m_PacsD);
}
void PacsD::transmitOutputTextSlot(QString text)
{
nameLineEdit->setText(text);
qDebug()<<"nameLineEdit Text: "<<text;
// The content of the LineEdit is correcly given
QString getTransmittedText= nameLineEdit->text();
qDebug()<<"getTransmittedText: "<<getTransmittedText;
}
}