मैं व्युत्पन्न है में दिखाई नहीं QTabBar
के वर्ग को लागू करने के लिए "+"
(new tab button
) QToolButton
का उपयोग कर बटन (समान क्रोम गूगल के लिए)। हालांकि, यह मेरी लिनक्स मशीन में काम कर रहा है लेकिन मेरी विंडोज़ मशीन में काम नहीं करता है। काम नहीं करके मेरा मतलब है कि QToolButton
मेरे windows machine
में दिखाई नहीं दे रहा है लेकिन यह मेरी लिनक्स मशीन (Ubuntu
) में दिखाई देता है। मैं इसे और डीबग करने में सक्षम नहीं हूं क्योंकि मैंने कारण समझने के लिए कुछ प्रयोगों की कोशिश की है लेकिन यह काम नहीं कर सका।QToolButton खिड़कियों
मेरे स्रोत फ़ाइल:
#include "tabbar.h"
TabBar::TabBar(QWidget *parent) : QTabBar(parent)
{
new_button_ = new QToolButton(this);
new_button_->setObjectName(QStringLiteral("AddButton"));
new_button_->setText("+");
new_button_->setFixedSize(QSize(20, 20));
connect(new_button_, SIGNAL(released()), this, SLOT(emit_new()));
movePlusButton();
}
QSize TabBar::sizeHint(void) const
{
QSize old = QTabBar::sizeHint();
return QSize(old.width() + 45, old.height());
}
void TabBar::emit_new(void)
{
emit newClicked();
}
void TabBar::movePlusButton(void)
{
quint64 totalWidth = 0;
for (long i=0; i < count(); i++)
totalWidth += tabRect(i).width();
quint64 h = geometry().top();
quint64 tab_height = height();
quint64 w = width();
if (totalWidth > w)
new_button_->move(w-40, tab_height - 30);
else
new_button_->move(totalWidth + 5, tab_height - 30);
}
void TabBar::resizeEvent(QResizeEvent *p_evt)
{
QTabBar::resizeEvent(p_evt);
movePlusButton();
}
void TabBar::tabLayoutChange(void)
{
QTabBar::tabLayoutChange();
movePlusButton();
}
मेरे हैडर फ़ाइल:
#ifndef TABBAR_H
#define TABBAR_H
#include <QObject>
#include <QToolButton>
#include <QTabBar>
#include <QResizeEvent>
#include <QLabel>
class TabBar : public QTabBar {
Q_OBJECT
public:
TabBar(QWidget *parent=nullptr);
~TabBar() { }
void movePlusButton(void);
void resizeEvent(QResizeEvent *p_evt) override;
void tabLayoutChange(void) override;
QSize sizeHint(void) const override;
private slots:
void emit_new(void);
signals:
void newClicked(void);
private:
QToolButton *new_button_;
};
#endif // TABBAR_H
संपादित करें:
मैं कुछ और प्रयोगों की कोशिश की और पता करने के लिए QToolButton
मिल गया है क्षेत्र टैब के बगल के पीछे छिपा है सलाखों। कृपया स्क्रीनशॉट देखें।
कोड के इंडेंटेशन को ठीक करना चाहते हैं। – tambre
'movePusButton' के अंत में' sizeHint' के अंत में मुझे [QWidget :: UpdateGeometry'] (http://doc.qt.io/qt-5/qwidget.html#updateGeometry) पर कॉल की उम्मीद होगी प्रभावित किया गया इसके अलावा मैं कोई स्पष्ट मुद्दा नहीं देख सकता। 'MovePlusButton' के अंत में 'QTabBar'' के' rect() 'और' new_button_' की 'ज्यामिति() 'को मुद्रित करने के लिए कोड को जोड़ें, यह देखने के लिए कि क्या सभी मान समझते हैं। –
मैंने आपके द्वारा सुझाए गए प्रयासों की कोशिश की है लेकिन यह काम नहीं किया है। क्या आप इसे चलाने की कोशिश कर सकते हैं और क्या गलत है? – abhiarora