C++ 从主窗口向qt tabWidget发送文件名';s菜单

C++ 从主窗口向qt tabWidget发送文件名';s菜单,c++,qt,C++,Qt,我正在使用qt构建一个包含多个选项卡的文件编辑器,每个选项卡对应一个文件。在mainwindow.cpp中,我具有以下功能: void MainWindow::on_actionOpen_triggered() { QString fileName = QFileDialog::getOpenFileName(this,"Open File","/home",tr("*.ext")); } 我需要将文件名发送到我的选项卡小部件的新选项卡。我知道qt中有

我正在使用qt构建一个包含多个选项卡的文件编辑器,每个选项卡对应一个文件。在mainwindow.cpp中,我具有以下功能:

    void MainWindow::on_actionOpen_triggered()
    {

        QString fileName = QFileDialog::getOpenFileName(this,"Open File","/home",tr("*.ext"));
    }
我需要将文件名发送到我的选项卡小部件的新选项卡。我知道qt中有用于类的信号和插槽,但我一辈子都不知道如何将QString发送到特定的选项卡。是否有方法将文件名发送到选项卡的创建事件,或者可能使用选项卡的索引向其发送信号

我对qt非常陌生,但我相当确信这应该是一个简单的过程。我就是想不出来

提前谢谢

编辑:完全修改的代码,两者都作为主窗口的成员:

void MainWindow::on_actionOpen_triggered()
    {
    if (fileName!=NULL)
        {
        int curtab=ui->fileTabWidget->addTab(new my_editor,tr("editor"));
        ui->fileTabWidget->setCurrentIndex(curtab);
        }
    }
因此,遵循@vizhanyolajos的指示;如果我将文件名传递到addTab的末尾,我需要在哪里添加其余的代码来接收它


我假设在自定义编辑器类中没有选项卡创建事件。您需要执行以下步骤,我认为您不需要任何信号/插槽机制。我认为您在问题中包含的插槽是QMainWindow的一个成员函数。我认为QTabWidget也是QMainWindow的一部分,因此您只需执行以下操作:

void onActionTriggered()
{
    const QString filename = // ...

    ui.TabWidget->addTab( /* Your custom class derived from QWidget or a Qt widget */, filename );
}

您的代码可能如下所示,例如:

void MainWindow::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this,"Open File","/home",tr("*.ext"));

    createNewPage( index , name , fileName );
}


createNewPage( int index , QString name , QString fileName )
{
    // your page creation code goes here
    // your fileOpen and fill textBox code goes here where you can use the fileName for it
}
我建议您将pageIndex+文件名存储在一个容器中,这样您就可以轻松地查询哪个页面对应于哪个文件


只需将
文件名
传递给
我的编辑器
小部件的构造函数即可。

在那里,您可以调用函数,用
文件名填充编辑器。

有很多方法。您能添加制表符创建代码吗?@deW1已添加到上面。请让我知道您是否也需要该类声明。我很确定这就是我需要的,然后我会设置该类以使该额外参数正确?在修改的代码中,您应该将(fileName!=NULL)更改为以前使用的QString fileName=QFileDialog::getOpenFileName(…),然后检查(!fileName.isEmpty())。然后将该文件名作为第二个参数传递给addTab(…)。如果您的自定义小部件也需要该文件名,请将其传递给它,并将其作为新的my_编辑器(文件名)。@MoffD更新了我的帖子。如果还有任何不清楚的地方,请告诉我。我感谢您的帮助,我使用了vizhanyolajos使用addTab的方法(/*类数据*/,文件名)
void MainWindow::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this,"Open File","/home",tr("*.ext"));

    if (fileName!=NULL)
    {
        ui->fileTabWidget->addTab(new my_editor( fileName ),tr("editor"));
        ui->fileTabWidget->setCurrentIndex(curtab);
    }
 }