Qt designer 如何实现图片悬浮?

img


用Qt designer 设计界面底部文案时,如何让二维码图像 放在文字右边,且不影响左侧的文字居中?(对于该需求,如果是传统HTML页面的话,很容易实现,只要设置图片position: absolute即可,但是Qss不支持该设置)
我现在实现的状况是这样的,右侧图片影响了左边的文字。

img


先获取控件的位置,然后控件加文字后的长度,然后计算偏移量,把图片放到对应的位置

1、第一种方法就是让你的二维码成为你的背景
2、第二种方法计算二维码的位置,然后让文字向右便宜。
3、第三种不要使用布局,让文字和二维码都固定位置。
解决你的问题,请点赞采纳,谢谢!

引用 皆我百晓生 小程序回复内容作答:
在Qt Designer中,要实现图片悬浮的效果,你可以考虑使用布局管理器来解决这个问题。布局管理器可以帮助你更好地管理控件的位置和大小。

首先,你可以使用水平布局管理器(QHBoxLayout)来放置文本和图片控件。将左侧的文本控件添加到布局管理器中。

然后,创建一个QWidget控件作为容器来容纳图片和文本控件。将该QWidget添加到布局管理器中,而不是直接添加图片控件。

接下来,在QWidget上添加一个QLabel控件用于显示图片,并将其设置为所需的尺寸。你可以在Qt Designer中为该QLabel设置初始值,如图片路径等。

最后,在代码中,你可以使用setToolTip方法为QWidget设置鼠标悬停时显示的提示信息。

通过上述步骤,在界面底部文案的左边添加一个文本控件,并在右侧的QWidget容器中实现图片悬浮的效果,且不会影响文本的居中显示。

请注意,在Qt Designer中,将QWidget控件与图片关联起来可能会有一些困难,因此你可能需要在代码中手动操作。

布局管理器: 在Qt Designer中,使用布局管理器来排列文本和图像。您可以使用水平布局(QHBoxLayout)来放置文本和图像,以确保它们在同一行上。

QLabel: 使用两个QLabel小部件,一个用于文本,另一个用于图像。将它们添加到水平布局中。可以在Qt Designer中将它们拖放到布局中。

设置文本居中: 对于文本标签,可以设置文本居中对齐,以确保文本在标签内居中。

设置图像右对齐: 对于图像标签,可以设置图像对齐到右边,以确保图像在标签内右对齐。在Qt Designer中,您可以选择图像标签,然后在右侧属性检查器中找到"alignment"属性并将其设置为右对齐(右对齐的常量为Qt::AlignRight)。

调整大小策略: 根据需要,您可以调整标签的大小策略(size policy),以确保文本和图像的大小在其容器内适当调整。

设置QSS样式: 如果需要进一步的样式自定义,您可以使用QSS样式表来为标签设置样式。但请注意,Qt的QSS不支持像HTML中的"position: absolute"这样的绝对定位。要实现更复杂的布局,可能需要使用自定义小部件和绘制事件。

参考gpt
在Qt Designer中,可以通过使用布局管理器来实现图片悬浮的效果。以下是一种可能的方法:

  1. 在Qt Designer中,将文本和图片放置在一个水平布局管理器(QHBoxLayout)中。确保文本在左侧,图片在右侧。

  2. 选择图片控件,右键点击,选择"Size Policy" -> "Fixed",以确保图片保持原始大小。

  3. 选择图片控件,右键点击,选择"Layout Alignment" -> "Align Right",以将图片靠右对齐。

  4. 选择图片控件,右键点击,选择"Layout Alignment" -> "Align VCenter",以将图片在垂直方向上居中对齐。

  5. 选择文本控件,右键点击,选择"Layout Alignment" -> "Align VCenter",以将文本在垂直方向上居中对齐。

  6. 在Qt代码中,可以使用QLabel控件来显示图片,并使用setPixmap()方法设置图片。

通过以上步骤,您可以在Qt Designer中实现图片悬浮的效果,同时保持文本居中。请注意,这只是一种可能的方法,您可以根据实际需求进行调整和修改。

援引讯飞星火:
您好,您可以使用Qt Designer中的布局管理器来实现图片悬浮。具体步骤如下:

  1. 在Qt Designer中,将二维码图像和文字放在同一个布局中。
  2. 将二维码图像的widget设置为浮动(setAlignment(Qt::AlignTop))。
  3. 将文字widget设置为居中对齐(setAlignment(Qt::AlignCenter))。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
您好!您可以使用Qt Designer中的布局来控制图片的位置。您可以使用QHBoxLayout或QVBoxLayout将文本和图像放在同一行或同一列中。如果您想让图像悬浮,您可以使用QSpacerItem将其推到左侧或右侧。这是一个示例代码:

from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QVBoxLayout, QWidget, QPushButton, QSpacerItem, QHBoxLayout
from PyQt5.QtGui import QPixmap
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建窗口
        self.setWindowTitle("Image Dragging")
        self.setGeometry(100, 100, 800, 600)

        # 创建标签和按钮
        label = QLabel("Hello World")
        button = QPushButton("Click me")

        # 创建布局
        vbox = QVBoxLayout()
        vbox.addWidget(label)
        vbox.addWidget(button)

        # 创建主窗口布局
        main_layout = QHBoxLayout()
        main_layout.addLayout(vbox)

        # 创建主窗口小部件并设置其布局
        central_widget = QWidget()
        central_widget.setLayout(main_layout)

        # 将主窗口小部件设置为窗口的中心小部件
        self.setCentralWidget(central_widget)

        # 添加图像悬浮效果
        self.image_spacer = QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)
        self.image_spacer.setHeight(50)
        self.image_spacer.setPosition(0, self.height() - 50)
        self.image_spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.image_spacer.setOrientation(Qt.Vertical)
        self.image_spacer.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

把二维码图片直接作为背景图不就ok了

结合GPT给出回答如下请题主参考
在Qt Designer中实现图片悬浮的方法如下:

  1. 在Qt Designer的界面中,找到想要添加悬浮图片的控件,比如QLabel。

  2. 右键单击该控件,选择“Change objectName”命名该控件。

  3. 打开该控件的属性编辑器,找到StyleSheet属性,设置以下代码:

    #ObjectName:hover {
     background-image: url(路径/图片名称);
    }
    

    其中,#ObjectName为控件的objectName,路径/图片名称为悬浮显示的图片的路径和名称。

  4. 点击保存并关闭属性编辑器。

  5. 运行程序,当鼠标移动到该控件上时,悬浮图片将会显示出来。

关于如何让二维码图像放在文字右边,且不影响左侧的文字居中的问题,可以使用布局管理器来实现。在Qt Designer中,可以使用水平布局管理器将文字和二维码图像放在同一行,并设置文字的对齐方式为居中对齐,如下代码所示:

from PyQt5.QtWidgets import QHBoxLayout, QLabel, QMainWindow, QWidget

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        layout = QHBoxLayout()
        central_widget.setLayout(layout)

        text_label = QLabel("文字")
        text_label.setAlignment(Qt.AlignCenter)
        layout.addWidget(text_label)

        qrcode_label = QLabel()
        qrcode_pixmap = QPixmap("路径/二维码图片名称")
        qrcode_label.setPixmap(qrcode_pixmap)
        layout.addWidget(qrcode_label)

        self.show()

其中,QHBoxLayout是水平布局管理器,QLabel代表文本和图片控件,setAlignment()方法设置文本对齐方式,setPixmap()方法设置二维码图片。通过使用水平布局管理器,可以让文本和二维码图像在同一行中对齐,同时不影响文本的居中对齐。