سؤال

أنا أستخدم أ QTabWidget لعرض مستندات متعددة في النافذة، وأريد رسم زر إغلاق في كل علامة تبويب.أنا استخدم مشهد من خلال و كيو تي 4, ، لذا فإن أداة علامة التبويب هي عنصر تحكم أصلي في Windows؛وهذا قد يؤثر على الجدوى.

هل يعرف أحد ما إذا كان من الممكن القيام بذلك باستخدام QTabWidget السيطرة، أو لا بد لي من إنشاء القطعة المخصصة؟إذا كان إنشاء عنصر واجهة مستخدم جديد هو الخيار الوحيد، فسيكون موضع تقدير كبير أي مؤشرات؛أنا جديد نسبيًا على كيو تي.

هل كانت مفيدة؟

المحلول

وحاليا لا يوجد طريقة للقيام بذلك مع الأسهم QTabWidget، ولكن المقبلة كيو تي 4.5 (المزمع الإفراج مارس 2009) سيكون في القدرة على إضافة أزرار وثيقة لعلامات التبويب إما يدويا أو عن طريق تعيين خاصية QTabBar.TabsClosable.

وحتى ذلك الحين، والطريقة الوحيدة للحصول على أزرار وثيقة هي فئة فرعية QTabWidget أو QTabBar وإضافتها يدويا (ممكن، ولكن ليس تافها).

نصائح أخرى

منذ كيو تي 4.5.إذا اتصلت فقط setTabsClosable(true) على QTabWidget, ، سيكون لديك أزرار الإغلاق ولكنها لن تكون ملزمة بإجراء ما.
يجب عليك توصيل إشارة tabCloseRequested(int) بإحدى الفتحات الخاصة بك إذا كنت تريد أن تفعل الأزرار شيئًا ما.

MainWindow::MainWindow()    
    m_tabs = new QTabWidget();
    m_tabs->setTabsClosable(true);
    connect(m_tabs, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int)));


void MainWindow::closeTab(const int& index)
{
    if (index == -1) {
        return;
    }

    QWidget* tabItem = m_tabs->widget(index);
    // Removes the tab at position index from this stack of widgets.
    // The page widget itself is not deleted.
    m_tabs->removeTab(index); 

    delete(tabItem);
    tabItem = nullptr;
}

في 4.5 هناك وظيفة

void setTabsClosable ( bool closeable )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top