1

これを行うにはどうすればよいですか:

たとえば、ラベルのユーザー名 = "ユーザー"

ボタンをクリックすると、入力を求めるダイアログ ボックスが表示されます。入力ボックスに「name」と入力し、[OK] をクリックします。ダイアログボックスの[OK]ボタンをクリックすると、ラベルのユーザー名が自動的に「名前」に変更されるようにするにはどうすればよいですか?

この値は設定値になります。設定から値をロードする方法は知っていますが、ラベルのユーザー名と「名前」を入力した入力ボックスが 2 つの異なるクラスにある場合、どうすれば変更できますか? 助けてください。

4

1 に答える 1

3

信号とスロットを使用する必要があります。このQLineEditがあるクラスでは、次のようなシグナルを宣言する必要があります。

class SomeClass : public QDialog     //or other inheritance
{
    /* constructors, functions and other stuff */
    signals:
         void valueChanged(const QString&);        //in QString you will send new value
}

誰かが「OK」ボタンをクリックした後、あなたはこの信号を発する必要があります:

emit valueChanged(myQLineEdit->text());

また、SomeClassを呼び出すクラスでは、このシグナルを、ラベルの値を変更するスロットに接続する必要があります。次に例を示します。

void MainWindow::someMethod()
{
    SomeClass *class = new SomeClass;
    connect(class, SIGNAL(valueChanged(QString)), this, SLOT(changeValue(QString)));
    /* set other parameters, show window*/
}

void MainWindow::changeValue(const QString &newText)
{
    myQLabel->setText(newText);
}
于 2012-09-15T21:08:29.980 に答える