Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中启动程序时如何创建列表或对象?_C++_Qt_Qlist - Fatal编程技术网

C++ 在Qt中启动程序时如何创建列表或对象?

C++ 在Qt中启动程序时如何创建列表或对象?,c++,qt,qlist,C++,Qt,Qlist,我刚开始使用Qt,在阅读了一些示例并自己尝试了一些东西之后,我产生了这种怀疑。 我想在程序启动后立即创建一个列表。它将为空,等待用户将项目(或对象)添加到此列表。 我做这个列表的主要例子是 现在,当启动Qt时,我在“Forms”文件夹中得到一个.ui文件,作为我的mainwindow.cpp,我得到以下内容: #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :

我刚开始使用Qt,在阅读了一些示例并自己尝试了一些东西之后,我产生了这种怀疑。 我想在程序启动后立即创建一个列表。它将为空,等待用户将项目(或对象)添加到此列表。 我做这个列表的主要例子是

现在,当启动Qt时,我在“Forms”文件夹中得到一个.ui文件,作为我的mainwindow.cpp,我得到以下内容:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
回顾一下这个示例,它没有与之关联的.ui文件。 更重要的是,让我好奇的是,这是主窗口的开始:

MainWindow::MainWindow()
    : textEdit(new QTextEdit)
{
    setCentralWidget(textEdit);

    createActions();
    createStatusBar();
    createDockWindows();

    setWindowTitle(tr("Dock Widgets"));

    newLetter();
    setUnifiedTitleAndToolBarOnMac(true);
}
在本例中,“createDockWindow()”执行创建列表和内容的技巧。 我只想说一句简单的话:

QList <QString> GroceryShoppingList
QList杂货店购物清单
现在,我把它放在哪里?如下所示(在创建UI的方法中):

#包括“mainwindow.h”
#包括“ui_main window.h”
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
QList杂货店购物清单;
}
MainWindow::~MainWindow()
{
删除用户界面;
}
如果是的话,我用程序初始化的所有东西都应该在这里面?还是只在这个特定的例子中? 我还提出了我的问题。我想知道这个函数做什么,因为它似乎是启动主窗口的函数。 提前谢谢

奖金:
如何将我用程序创建的列表与将在ui中显示的QListView链接?

对象列表是应用程序状态的一部分,因此不能仅在
主窗口中的局部变量中定义此数据

在您的简单示例中,它可以是
main窗口
类的成员,但:

在mainwindow.h中:

class MainWindow :.....
{
    ....
private:
    QList<QString> items;
    ....
}
class MainWindow :....
{
    ....
private:
    QStringListModel model;
    ....
}
在Designer中的UI文件或Qt Creator中的设计模式中添加
ListView
(即打开mainwindow.UI文件),然后在mainwindow.cpp中:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // "ui" contains members for each UI element that you added in
    // design mode. Look what the name of the list view is that you
    // added there, and adapt accordingly
    ui->listView->setModel(&model);

    // if you want, you can initialize your model with some items:
    model.setStringList({"Bananas", "DVD Player"});
}

你能解释一下吗:
setCentralWidget(textEdit)。你知道你在做什么,还是只是在玩弄和尝试一些东西?@QuantumPhysician,这是它的一个片段。@QuantumPhysician在示例中,
setCentralWidget(textEdit)
将textEdit作为中心小部件,所以所有事情都发生在它里面。我知道有一个更好的解释(例如,在示例中),但这就是我从阅读中得到的,基本上就是它所做的。我只想在程序启动时创建一个列表。谢谢您的回复@E4z9。我会尽快尝试,然后再报告。我在测试周,同时阅读文档。该死,太难了。在我阅读时尝试了你的代码(和其他东西),但没有成功。它不起作用,只是让你知道。
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // "ui" contains members for each UI element that you added in
    // design mode. Look what the name of the list view is that you
    // added there, and adapt accordingly
    ui->listView->setModel(&model);

    // if you want, you can initialize your model with some items:
    model.setStringList({"Bananas", "DVD Player"});
}