'setTabBar' is a protected member of 'QTabWidget'
时间: 2023-12-17 11:03:11 浏览: 159
您是正确的,`QTabWidget::setTabBar()` 是一个受保护的成员,不能直接从应用程序中调用。
要使用自定义的 `QTabBar`,您需要从 `QTabWidget` 派生一个新的类,并在其中公开一个公共方法来设置 `QTabBar`。例如:
```cpp
class MyTabWidget : public QTabWidget
{
public:
MyTabWidget(QWidget* parent = nullptr) : QTabWidget(parent) {}
void setCustomTabBar(QTabBar* tabBar) { QTabWidget::setTabBar(tabBar); }
};
```
现在,您可以使用 `MyTabWidget` 来创建 `QTabWidget`,并使用 `setCustomTabBar()` 方法设置自定义的 `QTabBar`。
```cpp
MyTabWidget* tabWidget = new MyTabWidget(this);
QTabBar* tabBar = new QTabBar(tabWidget);
tabBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
tabBar->setMinimumWidth(200);
tabBar->setMaximumWidth(400);
tabWidget->setCustomTabBar(tabBar);
tabWidget->addTab(new QWidget(), "Tab 1");
tabWidget->addTab(new QWidget(), "Tab 2");
tabWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
```
请注意,在使用此方法时,您需要将所有对 `QTabWidget` 的引用替换为 `MyTabWidget`。
阅读全文