@SGaist Instead of adding buttons on the header i directly added to treeview. still the same issue. below are the new files and code.
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHBoxLayout>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, m_pTabWidget(new QTabWidget(this))
, m_pTreeView(NULL)
, m_pButtonOne(NULL)
, m_pButtonTwo(NULL)
, m_pHBoxLayout(NULL)
{
ui->setupUi(this);
Init();
connect(m_pTabWidget, SIGNAL(currentChanged(int iIndex)), this, SLOT(OnCurrentTabChanged(int iIndex)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::Init()
{
if(m_pTabWidget)
{
// Tab 1
m_pTreeView = new QTreeView(m_pTabWidget);
if(m_pTreeView)
{
m_pButtonOne = new QPushButton("Button One");
m_pButtonTwo = new QPushButton("Button Two");
m_pHBoxLayout = new QHBoxLayout();
m_pHBoxLayout->addWidget(m_pButtonOne, 0, Qt::AlignLeft);
m_pHBoxLayout->addWidget(m_pButtonTwo, 0, Qt::AlignRight);
m_pTreeView->setLayout(m_pHBoxLayout);
m_pTabWidget->addTab(m_pTreeView, "Tree View Tab");
// Tab 2
m_pTabWidget->addTab(new QWidget(this), "Tab 2");
}
this->setCentralWidget(m_pTabWidget);
}
}
void MainWindow::UpdateButtonText()
{
if(m_pButtonOne && m_pButtonTwo)
{
QString strButtonTxt = "";
QFontMetrics fm(font());
// Update Button 1 text
strButtonTxt = "Button One";
strButtonTxt = fm.elidedText(strButtonTxt, Qt::ElideRight, m_pButtonOne->width()-20);
m_pButtonOne->setText(strButtonTxt);
// Update Button 2 text
strButtonTxt = "Button Two";
strButtonTxt = fm.elidedText(strButtonTxt, Qt::ElideRight, m_pButtonTwo->width()-20);
m_pButtonTwo->setText(strButtonTxt);
}
}
void MainWindow::OnCurrentTabChanged(int iIndex)
{
switch (iIndex)
{
case 0:
{
UpdateButtonText();
}
break;
case 1:
{
}
break;
default:
break;
}
}
void MainWindow::resizeEvent(QResizeEvent* pEvent)
{
Q_UNUSED(pEvent);
m_pTabWidget->resize(frameSize());
UpdateButtonText();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTabWidget>
#include <QTreeView>
#include <QHBoxLayout>
#include <QPushButton>
#include <QHeaderView>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
void Init();
void UpdateButtonText();
protected slots:
void OnCurrentTabChanged(int iIndex);
protected:
void resizeEvent(QResizeEvent* pEvent);
private:
Ui::MainWindow *ui;
QTabWidget* m_pTabWidget;
QTreeView* m_pTreeView;
QPushButton* m_pButtonOne;
QPushButton* m_pButtonTwo;
QHBoxLayout* m_pHBoxLayout;
};
#endif // MAINWINDOW_H
This issue has been bugging me while. Kindly help. thanks in advance.