【问题标题】:Qt - Creating Icon ButtonQt - 创建图标按钮
【发布时间】:2015-10-13 08:17:34
【问题描述】:

我正在尝试在 Google 地图上创建类似于放大、缩小的按钮;我想要只有图标那么大的按钮:

http://codegeekz.com/wp-content/uploads/google-maps-jquery.jpg

(很抱歉没有发布图片,显然没有足够的声誉)。

我正在尝试使用 QAction,但由于某种原因,按钮没有出现。我已经使用 QAction 在另一个项目中创建按钮,但复制所有相关代码并没有成功(实例根本没有出现)。这些是必需品:

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAction>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);

protected slots:
    void addEntry();

private:
    QAction *addButton;
};
#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"
#include <QHBoxLayout>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QWidget *window = new QWidget;
    QVBoxLayout *container = new QVBoxLayout();

    //Horizontal add/subtract layout------------------------------------

    QHBoxLayout *layer1 = new QHBoxLayout();

    QAction *addButton = new QAction((QIcon("/home/kyle/Desktop/add1.png")),"Add Entry", this);

    addAction(addButton);

    connect(addButton, SIGNAL(triggered()), this, SLOT(addEntry()));

    //Scroll Layout------------------------------------

    QHBoxLayout *layer2 = new QHBoxLayout();
    ...

    container->addLayout(layer1);
    container->addLayout(layer2);

    window->setLayout(container);
    setCentralWidget(window);
}

void
MainWindow::addEntry(){
    ...
}

我有:

  • 在空白小部件上尝试了 addAction(),并将其添加到布局中。
  • 在 .h 文件中声明了 QAction 对象(使用 QPainter 的常见问题)
  • 尝试使用 QPushButton(极其丑陋但有效。)

感谢您对错误的任何想法或对其他类似按钮的对象的建议。也可以随意提问。最终,我希望创建的按钮是可以使用 QHBoxLayout 操作的小部件。

【问题讨论】:

    标签: c++ qt qaction


    【解决方案1】:
    1. 当您调用addAction(addButton); 时,您打算在哪里添加操作。示例:ui-&gt;mainToolBar-&gt;addAction(addButton);

    2. QPushButton 将满足您的要求。您可以使用样式表设置按钮的样式。

    示例:

        QPushButton *addButton = new QPushButton(QIcon(":/plus.png"),"");
        QString buttonStyle = "QPushButton{border:none;background-color:rgba(255, 255, 255,100);}";
        addButton->setStyleSheet(buttonStyle); // Style sheet
        addButton->setIconSize(QSize(50,50));
        addButton->setMinimumSize(50,50);
        addButton->setMaximumSize(50,50);
        layer1->addWidget(addButton);// The horizontal layout
    
    1. 可以参考Qt中的样式表示例here

    【讨论】:

    • 这正是我所要求的,非常感谢!从现在开始,我一定会使用您提供的资源!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2014-06-27
    • 1970-01-01
    • 2022-01-17
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多