在 QPushButton 上放一行

Putting a line on a QPushButton

本文关键字:一行 QPushButton      更新时间:2023-10-16

我正在创建一个绘制图形的程序;我希望能够有一个按钮,用户可以按下该按钮来选择线条颜色和样式。我希望能够直观地显示当前选择的内容。

目前,我知道我可以使用两个单独的小部件来做到这一点,一个 QPush 按钮,然后是我自己制作的一个小部件,它只是使用 QPen 在上面画一条线。

我想将这两个小部件变成一个小部件。我希望这个小部件是一个可按下的"按钮",用户可以从中获取信号来运行设置新 QPen 的例程。

此功能是内置的吗? 或者我需要创建一个重新实现QPushButton或QActionButton的新小部件?或者我应该只制作我的小部件来侦听鼠标单击事件并从那里创建一个信号槽?

您可以使用

QLabel,设置样式表,并将其用作图表上的线条。您可以使用QGroupBox的边界来定义 x 和 y 轴。

也许是这样的:

yourQLabel.setStyleSheet("QWidget {background-color: rgb(255, 0, 0); color:white; border: 1px solid black;}"); // red with black border

然后,您可以根据图形的值设置QLabel的高度、宽度和位置。当然,这只有在图表上的线条是矩形时才有效。如果不是,那么您可能不得不使用除QLabel以外的其他东西。

使用 QLabel 的 setGeometry 方法来设置此项。

yourQLabel.setGeometry(x, y, width, height);

就您的按钮而言,如果需要,您可以对其进行类似操作。QPushButton还具有setGeometrysetStyleSheet方法。

如果你想告诉你的按钮在点击时做某事,假设你有一个名为myButtonQPushButton对象,把它添加到你的头文件 (.h):

class YourClass
{
    Q_OBJECT
    //...
    private slots:
        void on_myButton_clicked();
}

然后在源文件 (.cpp):

void YourClass::on_myButton_clicked()
{
    // stuff your button does on click
}