Qt练手小案例,可以通过下拉框方式选择颜色,改变背景色
首先上效果图
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
void initForm();
void initCombobox();
~Widget();
private slots:
void on_comboBox_currentIndexChanged(int index);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
initForm();
initCombobox();
}
void Widget::initForm()
{
//设置固定大小的界面
this->setFixedSize(255, 155);
}
void Widget::initCombobox()
{
//获取所有颜色英文名称
QStringList colorNameList = QColor::colorNames();
for(auto i : colorNameList)
{
//初始化一个pixmap数据
QPixmap colorPixmap(100, 40);
//给pixmap填充颜色
colorPixmap.fill(QColor(i));
//添加数据到下拉框中
ui->comboBox->addItem(QIcon(colorPixmap), i);
ui->comboBox->setIconSize(QSize(100, 40));
}
}
Widget::~Widget()
{
delete ui;
}
//自动生成的槽函数,颜色下拉框被重新选择时触发
void Widget::on_comboBox_currentIndexChanged(int index)
{
QStringList colorList = QColor::colorNames();
//获取当前选择的颜色名称
QString currentColor = colorList[index];
QPalette palette;
palette.setColor(QPalette::Background,currentColor);
//通过调色板设置背景颜色
this->setPalette(palette);
}