Intruder
Intruder18 декабря 2019 г. 6:47

QTabWibget удаление вкладки из стека QTabWidget

Всем доброго времени суток.
Что я делаю неправильно при удалении вкладки?

void MainTabWidget::on_MainTabWidget_tabCloseRequested(int index)
{
    removeTab(index);
    if(currentIndex() != -1){
        windowTitle = tr("Main window | ") + tabText(currentIndex());
    }else {
        windowTitle = tr("Main window");
        emit sendMenuToolsFlag(false);
    }
    emit sendWindowTitle(windowTitle);
    emit sendStatusBar(tabText(currentIndex()));
}

Но если я потом открою еще одну такую же вкладку (после удаления), то в стеке остается предыдущая, которая удаленная.
Вот так я создаю новую вкладку:

void MainTabWidget::actionOpenWrngObject()
{
    QString filename = QFileDialog::getOpenFileName(this, QString::fromUtf8("Open file"), QDir::currentPath(), "wiring data (*.xml *.XML *.Xml);;All files (*.*)");
    if(filename.isEmpty()){
        return;
    }
    QFileInfo fileInfo = filename;
    for (int ind = 0; ind < count(); ind++) {
        if(tabText(ind) == fileInfo.fileName()){
            setCurrentIndex(ind);
            return;
        }
    }
    objectwidget *newObjectWidgetPage = new objectwidget(this);
    newObjectWidgetPage->setWindowTitle(fileInfo.fileName());
    newObjectWidgetPage->setObjectName(fileInfo.fileName());
    newObjectWidgetPage->setFilename(filename);
    newObjectWidgetPage->import_data(&filename);
    if(!newObjectWidgetPage->error()){
        addTab(newObjectWidgetPage, newObjectWidgetPage->windowTitle());
        QString tabTitle = tr("Main window | ") +this->tabText(currentIndex());
        emit sendWindowTitle(tabTitle);
        emit sendStatusBar("Open file: " + filename);
        emit sendMenuToolsFlag(true);
        newObjectWidgetPage->add_actions(m_toolsActions);
        setCurrentWidget(newObjectWidgetPage);
        connect(this, SIGNAL(createNewWrngObject()), SLOT(show_selectDialog()));
        connect(this, SIGNAL(actionEditWrngObject()), newObjectWidgetPage, SLOT(action_edit()));
        connect(this, SIGNAL(actionDeleteWrngObject()), newObjectWidgetPage, SLOT(action_delete()));
    }else {
        newObjectWidgetPage->deleteLater();
        QMessageBox::critical(new QWidget(),tr("Error"),tr("The file is not valid!"));
        if(currentIndex() == -1){
            emit sendWindowTitle(tr("Main window"));
            return;
        }else {
            emit sendWindowTitle(tr("Main window | ") + tabText(currentIndex()));
            emit sendStatusBar(tabText(currentIndex()));
        }
    }
}

Заранее благодарю за помощь!

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
e
  • ehot
  • 1 апреля 2024 г. 0:29

C++ - Тест 003. Условия и циклы

  • Результат:78баллов,
  • Очки рейтинга2
B

C++ - Тест 002. Константы

  • Результат:16баллов,
  • Очки рейтинга-10
B

C++ - Тест 001. Первая программа и типы данных

  • Результат:46баллов,
  • Очки рейтинга-6
Последние комментарии
k
kmssr9 февраля 2024 г. 5:43
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий Кононенко5 февраля 2024 г. 12:50
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25 декабря 2023 г. 21:30
Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
J
JonnyJo25 декабря 2023 г. 19:38
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
G
Gvozdik19 декабря 2023 г. 8:01
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
a
a_vlasov14 апреля 2024 г. 16:41
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев
Павел Дорофеев14 апреля 2024 г. 12:35
QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
f
fastrex4 апреля 2024 г. 14:47
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
P
Pisych27 февраля 2023 г. 15:04
Как получить в массив значения из связанной модели? Спасибо, разобрался:))
AC
Alexandru Codreanu19 января 2024 г. 22:57
QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…

Следите за нами в социальных сетях