Я хотел бы знать, какой из следующих способов является правильным способом работы с сигналом / слотом в Qt.
Мне нужен способ иметь несколько экземпляров диалога, т. Е. A
и B
. И мне нужно сказать A
, чтобы напечатать «A» и B
, чтобы напечатать «B» из другого потока. Поэтому я считаю, что мне нужно что-то вроде:
ВАРИАНТ 1) A->print("A")
и B->print("B")
или лучше сделать:
ВАРИАНТ 2) emit print("A")
и emit print("B")
и использовать способ, которого я не знаю, только A
поймать "A" и только B
поймать "B".
У меня есть вариант 1, работающий так:
class myClass : public QMainWindow
{
Q_OBJECT
public:
myClass (QWidget *parent = 0, Qt::WFlags flags = 0);
~myClass ();
void doPrint(char* text)
{
emit mySignal(text);
}
private:
Ui::myClass ui;
public slots:
void newLog(char* msg);
signals:
void mySignal(char* msg);
};
myClass::myClass(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags)
{
ui.setupUi(this);
connect(this, SIGNAL(mySignal(char*)), this, SLOT(newLog(char*)));
}
void myClass::newLog(char* msg)
{
ui.textEdit->append(msg);
}
и тогда все, что мне нужно сделать, это:
myClass* instanceA = new myClass();
myClass* instanceB = new myClass();
instanceA->doPrint("A");
instanceB->doPrint("B");
это правильно?
Спасибо!