【问题标题】:QT Designer: opening specific window on actionQT Designer:打开特定的操作窗口
【发布时间】: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 标志,这没有什么坏处。显示您正在谈论的小部件的代码也没有什么坏处......

标签: c++ qt


【解决方案1】:

在表单文件中定义新窗口的布局,其名称与您的对话框相匹配。 创建一个基类型为 QDialog 的新 C++ 类,例如称为 mySpecialDialog。它应该参考以下表格文件; 私人的: UI::mySpecialDialog ui;

然后在您的主代码中,当您想要对话框时,...

    mySpecialDialog *msd;

    msd = new mySpecialDialog();

    if (msd->exec() == QDialog::Accepted)
    {
         ... code 
    }
    else
    {

    }

瞧。

【讨论】:

  • 谢谢!我不得不稍作修改,但我得到了我需要的东西,请参阅上面的帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
相关资源
最近更新 更多