Qt - 创建图标按钮
Qt - Creating Icon Button
我正在尝试创建类似于 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(),并将其添加到布局中。
- 在.h文件中声明了QAction对象(使用QPainter的常见问题)
- 尝试使用 QPushButton(非常丑陋但有效。)
任何关于错误的想法,或对其他类似按钮的对象的建议,我们都将不胜感激。也可以随意提问。最终,我希望创建的按钮是我可以使用 QHBoxLayout 操作的小部件。
当你调用addAction(addButton);
时,你打算在哪里添加动作。示例:ui->mainToolBar->addAction(addButton);
QPushButton
会满足你的要求。您可以使用样式 sheet 来设置按钮的样式。
示例:
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
- 可以参考Qt的样式sheet例子here
我正在尝试创建类似于 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(),并将其添加到布局中。
- 在.h文件中声明了QAction对象(使用QPainter的常见问题)
- 尝试使用 QPushButton(非常丑陋但有效。)
任何关于错误的想法,或对其他类似按钮的对象的建议,我们都将不胜感激。也可以随意提问。最终,我希望创建的按钮是我可以使用 QHBoxLayout 操作的小部件。
当你调用
addAction(addButton);
时,你打算在哪里添加动作。示例:ui->mainToolBar->addAction(addButton);
QPushButton
会满足你的要求。您可以使用样式 sheet 来设置按钮的样式。
示例:
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
- 可以参考Qt的样式sheet例子here