- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 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));
}
运行应用程序后,一个选项卡始终可见并正确展开。如前所述,最大宽度设置为 800 像素。添加新选项卡工作正常,但调整大小事件弄乱了尺寸标注。假设我要添加第二个标签,它在第一个标签旁边显示 800px,而不是在 800px 内缩放两个标签(每个标签 400/400 px)。
看起来像这样: wrong insertion
当它实际上应该是这样的: how it's supposed to be
我在这里做错了什么?
最佳答案
您是在选项卡上设置大小,而不是在 QTabBar 上。所以很明显,新标签将采用设置的宽度,直到发生调整大小。
您可以只继承QTabBar
并实现resizeEvent
和tabInserted
,这也使您的eventFilter
变得多余。
示例代码:
class CustomTabBar : public QTabBar
{
public:
CustomTabBar(QWidget *parent = Q_NULLPTR)
: QTabBar(parent)
{
}
protected:
void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE
{
/*resize handler*/
}
void tabInserted(int index) Q_DECL_OVERRIDE
{
/*new tab handler*/
}
void tabRemoved(int index) Q_DECL_OVERRIDE
{
/*tab removed handler*/
}
};
关于c++ - 动态扩展 QTabBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697666/
我如何存档:- 我需要将一个选项卡从其 tabBar 拖放到拆分小部件中的其他 tabBar?我已经将 QtabBar 子类化并实现了拖放事件,我已经可以用正确的像素图等拖动它,而且我还可以将它放到同
我希望标签栏扩展到空白区域,直到右侧。最好是所有选项卡都具有相同的宽度。我不知道该怎么做,因为我的样式表不起作用,而且我在文档中找不到选项。 from PyQt4.QtGui import * fro
我正在通过 QLineEdit 动态插入制表符,效果很好。为了填满屏幕的整个宽度 (800px),我使用自己的 eventFilter 扩展选项卡: tabs.h class ResizeFilter
所以我们为选项卡定制了 QSS,我想从标准选项卡中重新创建这种外观,但出于某种原因,我无法重新创建它。我希望所选选项卡看起来像在顶部并直接进入 Pane 。 选中或未选中时,选项卡的边框都可以正常工作
在我的应用程序中,我有一个 QTabBar 小部件,如果有很多选项卡,它会使用滚动按钮。 现在,在 currentChanged(int) 信号上,我调用了一个重命名上一个和当前选项卡的方法(调用 s
我有以下样式表: QTabBar::tab { background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,
我对 QTabBar/QTabWidget 有疑问。这是我的程序目前的样子,使用 QTabBar: 如您所见,QTabBar 和它下面的 QScrollArea 之间有一条难看的线。这条线是 QScr
嗨,我想在 QtabBar 小部件的标签栏的每个标签中放置图标和图标下方的文本。默认情况下,文本和图标设置为彼此相邻,我想一个显示在另一个下方。我们该怎么做。 最佳答案 似乎只有一种方法可以改变图标的
似乎没有办法为 QTabBar 的底线(如下图所示)设置样式表。 ,我想删除它。 我怎样才能删除它? 最佳答案 现在 6-7 个月没有使用 Qt,所以我不确定这是否有效,也无法对其进行测试。给 QTa
有没有办法为 QTabBar 关闭按钮分配 CSS 样式? 通常 QTabBar可以设置样式,但我无法找到如何从 CSS 引用按钮。 最佳答案 如上面的评论所述,从 Qt 4.6 开始,您可以使用以下
我将 QTabWidget 子类化以添加 QTabBar,其选项卡延伸到 tabBar 的整个宽度。因此我将扩展属性设置为 true。这似乎并没有改变选项卡的行为。 有人遇到同样的问题吗?我结合使用
我正在尝试将新选项卡添加到 QTabBar 中,但没有成功。 我想要实现的是,当您单击“添加”图标时,将会出现 3 个菜单项。根据选择的项目,除了“添加”图标之外,它还会创建一个新选项卡。 例如,如果
我正在尝试根据 QMenu 中的项目列表检查 QTabBar 中的现有选项卡。如果现有选项卡包含 QMenu 中找不到的项目,则该选项卡将以红色突出显示。 最初我使用的是tabTextColor,但它
我有一个按钮可以在 QTabWidget 中添加选项卡。但是当我改变按钮的大小时,它就不再在角落里了。那么我怎样才能像第一张图片那样把它带到角落呢? 不改变大小: 更改尺寸: 这是我的代码: from
我正在尝试更改 QTabWidget 的样式。我想减少每个选项卡中图标和文本之间的间隙,并将两者居中。 这就是我现在拥有的: 这就是我想要的: 我当前的样式表是: stylesheet = """
我的widget结构如下:QToolBar 添加了一个 QTabBar,并在 TabBar 之后添加了一个 QToolButton。 默认情况下,只会打开一个选项卡,ToolButton 可以打开更多
我真的想要一个可以通过双击选项卡标题来重命名的 QTabWidget。我用谷歌搜索并找到了 this solution ,但它更像是一个大纲,供开发人员使用 Qt 并对其小部件进行子类化。我有点不知道
我在 Konsole 应用程序中使用 css 样式来区分选项卡: QTabBar::tab:selected { background: #4286f4 } QTabBar::tab:hover
作为“Hide label text for Qt tabs without setting text to empty string”的后续: 我可以直接访问 QTabBar 选项卡中的小部件吗?我
我正在尝试使用自定义 CSS 优化 konsole 的 Breeze Dark 主题,但我无法弄清楚当 konsole 内容发生变化并且选项卡变得突出显示时选择的选择器(如果你明白我的意思;它仅仅意味
我是一名优秀的程序员,十分优秀!