- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在禁用标签状态下控制其像素图的颜色?
出于一些奇怪的原因,我需要在事件和禁用状态(显示 Logo )下具有完全相同的像素图外观。
当标签处于禁用状态时,我使用 label->setPixmap(pm)
放在 QLabel 上的像素图总是以与事件状态不同的颜色显示。
我在样式表上挣扎并尝试了 QFrame:disabled{background-color: rgba(..., ..., ..., 255);
但标签的一部分被像素图覆盖总是与另一种颜色混合,这似乎来自Qt对禁用状态的控制。
编辑:看起来,Qt 总是在禁用状态下混合像素图颜色和背景颜色。但是 Qt 不会在事件状态下混合颜色;然后像素图颜色保持不透明。我需要关闭禁用状态的这种混合行为。
最佳答案
一个(不那么复杂)的方法是自己绘制像素图。除了继承 QLabel
并覆盖 paintEvent
,您可以在标签中安装事件过滤器并仅监听 QPaintEvent
。
有过滤器:
class Filter : public QObject
{
Q_OBJECT
public:
Filter(): QObject(nullptr) {}
bool eventFilter(QObject *watched, QEvent *event);
};
在它的eventFilter
方法中,总是返回false,但是当你绘制pixmap时:
#include <QPaintEvent>
#include <QPainter>
#include <QStyle>
bool Filter::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::Paint)
{
QLabel * label = dynamic_cast<QLabel*>(watched);
QPainter painter(label);
QPixmap pixmap = label->pixmap()->scaled(label->size());
label->style()->drawItemPixmap(&painter, label->rect(), Qt::AlignHCenter | Qt::AlignVCenter, pixmap);
return true;
}
return false;
}
实例化并安装过滤器,类似于:
ui->setupUi(this);
Filter * filter = new Filter();
ui->label->installEventFilter(filter);
/* don't forget to call:
delete filter;
somewhere later */
在我的示例代码中,我缩放了像素图以适应标签大小并将其水平和垂直居中,但您可以根据需要调整所有这些。
此外,同一过滤器可以安装到多个标签,因为逻辑对所有标签都适用。更多关于事件过滤的信息 here .
关于c++ - 带有像素图 : prevent pixmap's color change in disabled state 的 QLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50152156/
我想知道如何在 Pixmap 中获取 FrameBufferPixel 我知道我必须使用 getFrameBufferPixels(true) 但是不知道要放什么参数 new Pixmap(byte[
位图和像素图有什么区别?位图和像素图的文件扩展名是什么? 最佳答案 The term "pixmap" is short for "pixel map. A pixmap stores and dis
我正在使用基于 Vulkan 的合成器编写 X11 窗口管理器。我想知道是否有一种方法可以有效地将窗口像素图加载为纹理。 在 OpenGL 中,可以直接使用 EXT_texture_from_pixm
我正在尝试在屏幕上画一个空心圆。我有一个 implements Screen 类,这是它的 render 方法: @Override public void render(float delta) {
try { URL url = new URL(this.url); InputStream in = new BufferedInputStream(url.open
在我的截屏项目中,QPixmap.save() 函数每次都返回 false 意味着失败。然而,当我从 Qt 页面复制示例项目时 http://qt-project.org/doc/qt-5/qtwid
我正在制作一个黑色方 block 在白色背景中掉落的游戏。我的红色化身正在躲避黑色方 block ,但如果它击中黑色方 block ,游戏就结束了。有人可以帮我开始吗?我只是想让头像检查 block
在过去的几个小时里,我试图解决在 QAction 中显示图标的问题。 问题是没有显示图标,只有文本解密放在它的位置'Roads'。 我试过调试它并且一直QPixmap是NULL,看起来它找不到文件。
我想将部分Pixmap(指定的矩形)上传到GPU中的纹理(指定位置)。 我想要实现的是 void updateTextureFromPixmap(sourcePixmap,sourceRectangl
我希望使用 while 循环自动更改显示在窗口中的像素图图像,该循环具有定义的延迟并使用存储在字符串列表中的图像位置。 我尝试过的所有可能性都会导致显示第一张图像但在运行时不会更改。任何更改只有在程序
我尝试学习如何在 xcb 库中使用共享内存像素图。你们中有人有这方面的经验并想分享示例代码和/或信息吗?这将非常有帮助。 谢谢 最佳答案 经过一番研究,我发现了如何在 xcb 中使用共享内存像素图。
我目前正在开发一款游戏,需要与物体进行像素完美碰撞。然而,我遇到的唯一障碍是实际获得该物体的掩模。我考虑过将对象的 Sprite (已正确缩放和转换)渲染到 FrameBuffer,然后将其转换为像素
我在下面这个例子中使用帧缓冲区的深度缓冲区来实现纹理 mask : https://github.com/mattdesl/lwjgl-basics/wiki/LibGDX-Masking#maski
我正在 Gtk::DrawingArea 上绘制像素。有时会发生公开事件,我需要重绘所有内容。但是再次绘制每个像素很慢,所以我尝试创建一个 Sdk::Pixmap 并绘制到它,然后在需要时将它绘制到屏
我正在尝试创建一个 Tile 渲染程序。这是一些基本代码。 标题 class Tile: public QGraphicsItem { public: Tile(void); ~Tile(void);
背景 我正在创建一个应用程序,我在其中手动布局 a texture atlas .重点是图像本身不应该是透明的——它具有一致的背景颜色,然后应该在代码中将其删除。 我遇到的问题是我似乎无法从我正在处理
如何更改像素图中的特定颜色?例如,我有一个包含白色和黑色像素的像素图,我想将所有白色像素更改为蓝色,但不要理会黑色像素。或者可能将黑色更改为白色,将白色更改为蓝色...... [我正在 Qt/PyQt
我有一个从 Pixmap 构建的 com.badlogic.gdx.scenes.scene2d.ui.Image。像素图只有一个像素,因为我用它来构建一个图像,该图像用作可以淡入淡出的背景。 Pix
我看过那些文章: https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/AssetManager.ht
我可以在 GTK3“.CSS”文件中使用“像素图”引擎吗?如果是这样,如何?我制作了一个我非常满意的主题,但它是针对 gnome 2 桌面的。它使用像素图引擎调用保存在文件夹中的图像来制作按钮和文本框
我是一名优秀的程序员,十分优秀!