1

だから私は持っていmainwindow.hます:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void SetBoxTest(const QString &Text);

[...]

とでmainwindow.cpp

void MainWindow::SetBoxTest(const QString &Text) {
    ui->plainTextEdit->setPlainText(Text);
}
  1. 他のファイルにアクセスSetBoxTestしたい。私は含めましたが、今は何ですか?機能に正しくアクセスするには? .cppmainwindow.hSetBoxTest

  2. そのようにUIにアクセスすることは正しいですか?

  3. また、これをどこかで見ましたが、そのような関数タイプ (テキスト ボックスにテキストを設定する) をconst QString &Text入れるべきではないのはなぜですか? QString Text何が良いですか?

編集:次 のようにしようとすると:

MainWindow.SetBoxTest(DataString);

また

MainWindow.SetBoxTest(DataString);

それは私がいると言いますmissing ; before .

4

4 に答える 4

4
  1. あなたは正確に何をしようとしていますか?MainWindow PlainTextEditを他のUIファイルから変更する場合は、シグナルを発行できます。

  2. はい。

  3. これは、いわゆる«左辺値-constへの参照»です。これは、constオブジェクト(ここではQString)への参照を示します。事実は、あなたがただ書くならば:

    void SetBoxTest(QString Text);
    

QStringは値で渡されるため、コピーされます。参照がある場合、それはまったくコピーされません(参照は単なるエイリアスです)。その場合、参照は値を渡すよりも効率的です。

ただし、Qtは、暗黙的共有と呼ばれるものを使用してコピーを最適化しようとします

于 2012-11-08T15:23:08.043 に答える
1
  1. MainWindowオブジェクト名がwindowの場合は、ポインタを使用している場合は実行window.SetBoxTest();または使用します->
  2. ui->plainTextEdit... UIが定義されていません...qtクリエーターを使用してフォームを作成しましたか?
  3. const QString &Text参照渡しです。

C ++の基礎を学びましょう。これらのポイントのほとんどは、特にqtとは関係ありません。

于 2012-11-08T15:22:18.890 に答える
1

他の.cppファイルのSetBoxTestにアクセスしたい。「mainwindow.h」を含めましたが、今は何ですか?SetBoxTest関数に正しくアクセスする方法は?

「mainwindow.h」を含めることに加えて、メインウィンドウへのポインタが必要なだけで、次のように呼び出すことができます。window->SetBoxTest("Hello World");

その方法でUIにアクセスするのは正しいですか?

これはかなり多くの質問です。私の意見はそうです。他のクラスにメインウィンドウのUIに直接アクセスさせるよりもはるかに優れています。

また、この「const QString&Text」をどこかで見ましたが、このような関数型(テキストボックスにテキストを設定する)に「QStringText」を配置しないのはなぜですか?何がいいの?

一般に、参照を渡すので、コピーを渡すconst QString &textよりも時間がかからないので、より良いです。説明については、こちらQString textをご覧ください。

于 2012-11-08T15:23:56.627 に答える
0
  1. 他のcppファイルには、実行中のメインウィンドウのインスタンスがありますか?
  2. たぶん...あなたの最初の答えが何であるかがわかります;)
  3. これconst QString&はより安全です。コードから const を削除しても、何も変更されませんが、変更できないか、試してもコンパイルエラーが発生することが保証されます。参照は、qstring があり、それを関数に渡すためです...必要な cuz を作成するだけではありません。

//編集: ポインタだけで文字列全体をコピーしないため、参照によってメモリが節約される可能性があります。

スーロン ザイ

于 2012-11-08T15:20:22.743 に答える