我在 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)
是因为FileDialog
是一个QMainWindow
类型类,对吧?但是我们为什么要添加ui(new Ui::FileDialogClass), directory("/")
?还请解释为什么directory()
用字符串传递"/"
,是否提示程序将如何理解哪个是目录,哪个是文件?
我还应该添加其他两个函数是如何填充的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()
是如何工作的,我尝试阅读文档,但我很明白:(。如果我的问题非常愚蠢,请不要打扰?非常感谢。