使⽤Qt 开发⽂本编辑器(⼆):标签页式⽂档实现
Qt中相关的类
标签页俗称Tab页,Qt提供了QTableWidget⽤于创建基于Tab页式的⽂档。使⽤QTableWidget,我们可以很⽅便得添加和删除Tab、设
置和获取Tab页上⾯的⽂字,设置当前的Tab。
实现
MainWindow类中维护⼀个QTabWidget的指针。
新建⼀个⽂本⽂件时:打开⼀个⽂件时:
//新建⽂件
void MainWindow::newFile()
{
newNumber = (newNumber < 0 ? 0 : newNumber);
QString fileName = tr("New %1").arg(++newNumber);
openedFiles << fileName;
NotePad *notePad = new NotePad(config);
notePad->SetNewFile(true);
int index = tabWidget->addTab(notePad, fileName);
tabWidget->setCurrentIndex(index);
addToNotePadMap(index, notePad);
}
//创建新的Tab(⽤于打开⽂件)
void MainWindow::newTab(const QString& fileName, QFile& file)
{
int index = 0;
NotePad *notePad = findNewFile(index);
if(notePad == NULL)
{
notePad = new NotePad(config);
index = tabWidget->addTab(notePad, QFileInfo(fileName).fileName());
addToNotePadMap(index, notePad);
}
else
{
notePad->SetNewFile(false);
tabWidget->setTabText(index, QFileInfo(fileName).fileName());
newNumber--;
}
openedFiles << fileName;
QByteArray data = adAll();
notePad->setPlainText(QString::fromLocal8Bit(data));
tabWidget->setCurrentIndex(index);
setWindowTitle(QFileInfo(fileName).fileName());
}
关闭⼀个⽂件时:
//关闭⽂件(指定⽂件)
void MainWindow::fileClose(int index)
{
if(!shouldCloseFile())
{
return;
}
if (maybeSave(index))
{
if (unt() == 1)
{
openedFiles.clear();notepad++
QString fileName = "New 1";
openedFiles << fileName;
mapNotePads[0]->setPlainText("");
mapNotePads[0]->SetNewFile(true);
tabWidget->setTabText(0, fileName);
setWindowTitle(fileName);
newNumber = 1;
}
else
{
tabWidget->removeTab(index);
removeFromNotePadMap(index);
newNumber--;
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。