Я хотел бы знать, какое из следующего является правильным способом делать вещи с сигналом/слотом в Qt.Сигнал Qt в слот специального объекта
Мне нужен способ иметь несколько экземпляров диалогового окна, то есть: A
и B
. И мне нужно сообщить A
для печати «A» и B
для печати «B» из другой темы. Поэтому я считаю, мне нужно что-то вроде как:
ВАРИАНТ 1)A->print("A")
и B->print("B")
или лучше сделать:
ВАРИАНТ 2)emit print("A")
и emit print("B")
и использовать способ, который я не знаю, только A
поймать «А» и только 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");
это право?
Спасибо!
Давайте переходите с противоположной стороны вашего вопроса. В этом случае вы можете чувствовать себя комфортно с вариантом 2?Можете сказать пример, когда второй случай имеет преимущество, если единственное, что вы хотите, это напечатать «A» и «B»? – Narek