【发布时间】:2016-02-04 21:34:18
【问题描述】:
我是 QT Designer 的新手,想从操作中打开一个特定窗口。我已经搜索过,我看到的所有示例都类似于this answer,并且只提供了一个通用的新窗口,而不是一个已经预定义的窗口。现在,我正在尝试在文件对话框完成后立即打开一个名为 listcsv 的预定义窗口(带有标题、源代码和表单)。但是代码只是弹出一个通用的空白窗口,而不是我需要的。
这是我的主窗口 .cpp:
#include "csv_helper.h"
#include "ui_csv_helper.h"
#include "listcsv.h"
#include "ui_listcsv.h"
#include <QFileDialog>
#include <QWindow>
CSV_helper::CSV_helper(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::CSV_helper)
{
ui->setupUi(this);
}
CSV_helper::~CSV_helper()
{
delete ui;
}
void CSV_helper::on_buttonBox_accepted()
{
QFileDialog::getOpenFileName(this, tr("Open CSV"), "/Users/Dropbox", tr("CSV Files (*.csv)"));
QWidget *listcsv = new QWidget;
listcsv->show();
hide();
}
对于这么简单的事情,我感到很沮丧,但互联网上似乎没有一个直接的答案。
编辑:已解决,感谢 john elemans。只是不得不修改一些东西。
void CSV_helper::on_buttonBox_accepted()
{
QFileDialog::getOpenFileName(this, tr("Open CSV"), "/Users/Dropbox", tr("CSV Files (*.csv)"));
ListCSV *msd;
msd = new ListCSV();
msd->show();
}
【问题讨论】:
-
您定义了一个名为 ListCSV 的小部件,对吧?所以你应该做
auto * myListCSVWidget = new ListCSV();或者没有指针更好ListCSV myListCSVWidget;。 -
检查了这两个。前者警告说 auto 是 C++11 扩展并且在运行时似乎什么都不做;后者不发出警告,但也不做任何事情。
-
是的,您需要为自动设置 C++ 11 标志,这没有什么坏处。显示您正在谈论的小部件的代码也没有什么坏处......