Qt — Создание кнопки со значком

Я пытаюсь создать кнопки, похожие на увеличение и уменьшение масштаба на Картах Google; Я хочу, чтобы кнопки размером не больше иконки:

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

(Прошу прощения за то, что не выложил изображение, видимо, недостаточно репутации).

Я пытаюсь использовать QAction, но по какой-то причине кнопки не появляются. Я использовал QAction для создания кнопок в другом проекте, но копирование всего соответствующего кода не оказалось успешным (экземпляры просто не отображаются). Вот что необходимо:

mainwindow.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

mainwindow.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 () на пустом виджете и добавил это в макет.
  • Объявлен объект QAction в файле .h (распространенная проблема с использованием QPainter)
  • Пробовал использовать QPushButton (очень уродливо, но работает.)

Любые идеи о том, что не так, или рекомендации для других объектов, похожих на кнопки приветствуются. Также не стесняйтесь задавать вопросы. В конечном итоге, кнопки, которые я хочу создать, — это маленькие виджеты, которыми я могу манипулировать с помощью QHBoxLayout.

1

Решение

  1. Когда вы звоните addAction(addButton);Где вы собираетесь добавить действие. Пример: ui->mainToolBar->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 Вот
3

Другие решения


По вопросам рекламы [email protected]