C++ 从主窗口向qt tabWidget发送文件名';s菜单
我正在使用qt构建一个包含多个选项卡的文件编辑器,每个选项卡对应一个文件。在mainwindow.cpp中,我具有以下功能: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中有
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);
}
}