У меня есть приложение, в котором я добавил QTabWidget. Вкладки закрываются. Когда я добавляю новую вкладку, если вкладка уже добавлена, она по-прежнему добавляет новую вкладку и делает дубликат. Я хочу избежать этого дублирования. Если вкладка уже открыта, она просто активирует эту вкладку и не открывается снова. Вам поможет помощь. БлагодаряИзбегайте дублирования вкладок в QTabWidget
ответ
Использование tabText (INT индекс), чтобы получить идентификатор каждой вкладки перед добавлением новой вкладки addTab (QWidget * страница, Const QString & этикетки) и сравнить тексты на этикетке, если уже существуют только setCurrentIndex этого показателя или добавить новую вкладку.
Чтобы добавить ответ на вопрос Prakash, помните, что несколько раз заголовок вкладки не является хорошим идентификатором содержимого вкладки (это, конечно, зависит от ситуации). Например, у вас может быть файловый менеджер, где текущий каталог является заголовком вкладки, но в вашей файловой системе могут быть разные каталоги с тем же именем.
Я бы следил за следующей стратегией для определения содержимого вкладки: Qt позволяет вам устанавливать динамические свойства для виджетов (см. QObject::setProperty), поэтому каждый раз, когда вы создаете новую вкладку, например файлового менеджера, вы можете делать что-то вроде
widget = ...
widget->setProperty("tab_dir_fullpath", the_full_path);
tabWidget->addWidget(widget, directory_name);
где the_full_path
будет уникальный идентификатор (в данном примере, полный абсолютный путь к текущему каталогу), который не будет отображаться для пользователя, но которые впоследствии можно использовать, чтобы увидеть, если данный каталог уже открыт.
Затем при открытии новой вкладки, вы должны проверить, является ли уже открыт тот же полный путь:
for (int k = 0; k < tabWidget->count(); ++k) {
if (tabWidget->widget(k)->property("tab_dir_fullpath").toString() == the_full_path_to_open) {
tabWidget->setCurrentIndex(k);
return;
}
}
... // open new tab, as in the previous snippet.
Кроме того, его очень хорошо использовать setTabData() вместо того, чтобы имущество, которое является более правильным способом сделать ,
- 1. Избегайте дублирования вкладок или окон браузера (window.open())
- 2. Избегайте дублирования
- 3. Как расширить панель вкладок QTabWidget?
- 4. Избегайте дублирования в LINQ
- 5. Как предотвратить удержание кнопок вкладок в QTabWidget
- 6. Динамически менять вид вкладок в QTabWidget (PyQt)
- 7. Избегайте дублирования вычислений OFFSET
- 8. Избегайте дублирования обратного вызова
- 9. Android - Избегайте дублирования макета
- 10. Избегайте дублирования кода
- 11. Избегайте дублирования записей - HashSet
- 12. Избегайте дублирования элементов Python
- 13. Избегайте дублирования записей
- 14. Избегайте дублирования кода SQL?
- 15. Избегайте дублирования голосов
- 16. Избегайте дублирования файлов локализации
- 17. избегайте дублирования списка.
- 18. Избегайте дублирования клона
- 19. Избегайте дублирования соединений Autobahn
- 20. Избегайте дублирования кода
- 21. Избегайте дублирования дивы горизонтально
- 22. Предотвращение дублирования вкладок JQuery
- 23. Избегайте дублирования кода в F #
- 24. Избегайте дублирования вычислений в охранниками
- 25. дублирования Избегайте в Rails валидаторы
- 26. Избегайте дублирования включать в EF
- 27. Избегайте дублирования элементов в результатах
- 28. Избегайте дублирования записей в цикле
- 29. Избегайте дублирования функций в JQuery
- 30. Избегайте дублирования задач в ManagedScheduledExecutorService
u приветствуется .. приветствия !! – Balu
Я сделал это. для (INT I = 0; я подсчет(); я ++) { , если (item-> текст() == tabWidget-> tabText (я)) { tabWidget-> setCurrentIndex (я); возвращение; } } –
@noor cheers..mark это ответ, если разрешено. – Balu