QLineEdit を介してタブを動的に挿入していますが、これは正常に機能します。画面の幅全体 (800px) を埋めるために、独自の eventFilter を使用してタブを展開しています。
tabs.h
class ResizeFilter : public QObject
{
QTabBar *target_tabs;
public:
ResizeFilter(QTabBar *target_tabs) : QObject(target_tabs), target_tabs(target_tabs) {}
bool eventFilter(QObject *object, QEvent *event)
{
if (object == target_tabs) {
if (event->type() == QEvent::Resize)
{
// The width of each tab is the width of the tabbar / # of tabs.
target_tabs).arg(target_tabs->size().width()/target_tabs->count()));
}
}
return false;
}
};
class tabs : public QWidget
{
Q_OBJECT
private:
QTabBar *cells;
};
tabs.cpp
void tabs::changeTabs(int value)
{
tabs->installEventFilter(new ResizeFilter(tabs));
if (tabs->count() < value)
tabs->insertTab(tabs->count(), QIcon(QString("")), QString::number(value));
}
アプリの実行後、1 つのタブが常に表示され、正しく展開されます。前述のように、最大幅は 800 ピクセルに設定されています。新しいタブの追加は正常に機能していますが、サイズ変更イベントによって寸法が乱れます。両方のタブを 800 ピクセル (それぞれ 400 / 400 ピクセル) にスケーリングするのではなく、最初のタブの隣に 800 ピクセルを表示する 2 番目のタブを追加するとします。
次のようになります: 間違った挿入
実際にこのように見える場合: どのようにあるべきか
ここで何が間違っていますか?