我有一個應用程序,我在其中添加了一個QTabWidget。 標籤可關閉。 當我添加新標籤頁時,如果標籤頁已添加,它仍會添加新標籤頁並進行復制。 我想避免這種重複。 如果該選項卡已打開,那麼只需激活該選項卡,不要再打開。 您的幫助將不勝感激。 感謝避免QTabWidget中重複的選項卡
0
A
回答
1
使用tabText(INT指數)來獲取每個標籤的標識添加新的選項卡addTab(QWidget的*頁,常量QString的&標籤)之前和比較標籤文本,如果已經存在該指數剛剛setCurrentIndex或者添加一個新標籤。
2
要添加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.
0
而且它非常好,而不是使用屬性setTabData(),這是做的更合適的方式。
相關問題
- 1. 如何避免子MDI選項卡控件中的重複選項卡
- 2. 如何避免在Chrome擴展中的選項卡重複
- 3. 避免重複的瀏覽器選項卡或窗口(window.open())
- 4. 從QTabWidget拖放選項卡
- 5. QTabWidget上的關閉按鈕而不是QTabWidget中的選項卡
- 6. 避免Haskell中的重複項目
- 7. 避免列表中的重複項
- 8. 如何避免ScriptDb中的重複項?
- 9. SQLite避免Android中的重複項
- 10. 在QT中標識選項卡Qtabwidget
- 11. 避免重複
- 12. 避免重複
- 13. 避免在HTML中重複選擇+選項
- 14. 避免卡片遊戲中出現重複卡片的算法
- 15. PyQt:對QTabWidget中的選項卡重新排序
- 16. 避免在運行時創建的tcxPageControl上的重複選項卡
- 17. 避免重複行
- 18. 避免重複值
- 19. R:避免重複$
- 20. 避免重複行
- 21. LINQ中避免重複
- 22. 在MySql中避免重複。
- 23. ExtJs 4如何避免重複ID多個選項卡問題狀態保存
- 24. QTabWidget選項卡上下文菜單
- 25. 使用按鈕更改QTabWidget選項卡
- 26. QTabWidget選項卡沒有顯示
- 27. 如何避免重複樣式項目?
- 28. 避免重複列表項目
- 29. 避免插入子數組重複項
- 30. 避免將重複項推送到localStorage
歡迎光臨..歡呼聲! – Balu
我已經完成了。 對(INT I = 0;我計數();我++){ 如果 (用品 - >文本()== tabWidget-> tabText(i))的 { tabWidget-> setCurrentIndex(ⅰ); return; } } –
@noor歡呼..標誌如果解決了答案。 – Balu