很少有QT编程问题

时间:2014-08-10 13:45:59

标签: c++ qt

我是QT编程的先驱,当我尝试创建GUI应用程序时遇到了一些问题和疑问:

·我有一个'Client'类,用于存储来自客户端的数据。我使这个类成为一个Designer表单类(因为我想创建一个用户可以输入数据的窗口)。我做了它,以便在单击按钮时设置数据。我的问题是,如果一个存储数据的简单类应该有一个Designer表单,或者这两件事应该分开完成。

·关于最后一个问题,当我创建“客户端”小部件(当用户想要输入客户端数据时将打开的窗口),我必须将其作为指针 客户端窗口=新客户端 窗口 - >显示()。 如果不这样做,小部件会立即打开和关闭。但我有另一个名为“List”的类,它是一个模板类。当我想将客户端对象存储在List中时,它不起作用,因为List不接受指针,而是一个具体的对象(我希望你理解我在说什么)。我该怎么做才能解决这个问题?最好的方法是能够做到这一点: 客户窗口; window.show(); 没有它关闭。

·我应该在main.cpp或mainwindow.cpp上创建整个应用程序吗?我的意思是,所有使应用程序工作的函数和所需的不同变量应该存在于main.cpp或mainwindow.cpp中吗?什么是正确的方法?

感谢。

1 个答案:

答案 0 :(得分:1)

a)通常最好将数据模型与用户界面代码分开。这有很多原因,但一个非常实际的原因是你也可以在不同的地方使用你的模型 - 例如在自动化测试中。

b)使用Qt,您通常会有一个简单的main.cpp文件,用于设置应用程序对象并显示主窗口。因此,您有单独的文件。我可以在Qt文档中的“Application example”找到很好的例子:

int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(application);

    QApplication app(argc, argv);
    app.setOrganizationName("QtProject");
    app.setApplicationName("Application Example");
    MainWindow mainWin;
    mainWin.show();
    return app.exec();
}

关于列表模板的第三个问题很难在不知道上下文的情况下回答。无论如何,为了保持一个简单的对象列表,你可以使用qt提供的QList模板类。这是一个例子:

QList<QWidget *> list;
list.append(pMyWidget);