3

私は C++ の経験があまりなく、まだ学習中であり、重要な詳細を忘れ続けているため、他のコードや例を理解したり、追加のライブラリを使用したりするのが難しくなっています。また、学校の課題のために、Qt の操作方法を学ばなければなりません。そのため、次の行コードに直面した例を理解しようとしています。

クラスFileDialogは、次のようにヘッダー ファイルで宣言されます。

class FileDialog : public QMainWindow
{
    Q_OBJECT

public:
    FileDialog(QWidget *parent = 0);
    ~FileDialog();

private slots:
    void changeDirectory();
    void fillList();

private:
    Ui::FileDialogClass* ui;
    QDir directory;

};

メイン ファイルではない他のソース .cpp ファイルでは、クラスのコンストラクターは次のように入力されます。

    FileDialog::FileDialog(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::FileDialogClass), directory("/")
{
    ui->setupUi(this);dir
    setWindowTitle("Changing Directory");

    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(changeDirectory()));
    fillList();
}

ここで、私はその線についてよくわかりません

FileDialog::FileDialog(QWidget *parent)
        : QMainWindow(parent), ui(new Ui::FileDialogClass), directory("/")

は型クラスなFileDialog::FileDialog(QWidget *parent) : QMainWindow(parent)ので書いたと思いますよね?しかし、なぜ追加するのでしょうか? が string で渡される理由も説明してください。プログラムがディレクトリとファイルをどのように理解するかについてのヒントを与えるためですか?FileDialogQMainWindowui(new Ui::FileDialogClass), directory("/")directory()"/"

また、他の 2 つの関数がどのように機能changeDirectoryし、fillList満たされているかを追加する必要があります。

void FileDialog::changeDirectory()
{
    QString path = QFileDialog::getExistingDirectory(this, tr("Directory"), directory.path());
    if ( path.isNull() == false )
    {
        directory.setPath(path);
        fillList();
    }
}

void FileDialog::fillList()
{
    ui->listWidget->clear();
    ui->listWidget->addItems(directory.entryList());
}

可能であればtr()、上記のコードで関数がどのように機能しているかを説明してください。ドキュメントを読んでみましたが、かなり理解しています:(。私の質問が非常にばかげていても気にしないでください。どうもありがとう。

4

2 に答える 2

2

まず、次の部分について:

FileDialog::FileDialog(QWidget *parent)
        : QMainWindow(parent), ui(new Ui::FileDialogClass), directory("/")

これはコンストラクターの初期化リストです。このリストには、次のものがあります。

  • 基本クラス コンストラクターへの呼び出し: これはQMainWindow(parent).
  • メンバー変数の初期化: コンマで区切られたリストされた各メンバー変数は、指定された値で初期化されます (例:uiメンバーはnew Ui::FileDialogClass.

次に、約directory。これは変数であり、UNIX システムのルート ディレクトリに対応するQDir値で初期化されます。"/"

最後に、Qt ドキュメントで説明されているように、tr()国際化に使用される関数です (アプリケーションに設定されたロケール/言語に応じて、目的の翻訳を返します)。

于 2013-05-24T10:43:17.917 に答える
-4

これが最初の 2 番目3 番目の質問に対する答えです。それが役に立てば幸い。

于 2013-05-24T10:36:40.160 に答える