我想從下拉列表中選擇顏色,並基於該顏色我想在窗口上繪製一個矩形。 我可以用預定義的顏色繪製一個矩形,但不知道如何從組合框中傳遞顏色。 和只有一個矩形繪製在窗口上,我想在窗口上繪製多個矩形。QT-從組合框中選擇顏色並繪製矩形
所以程序就是這樣工作的。用戶將點擊按鈕 - >組合框出現--->選擇顏色 - >單擊確定,該顏色的矩形將出現在窗口上。
Dialog.cpp
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
class CustomDialog : public QDialog
{
public:
CustomDialog(const QStringList& items)
{
setLayout(new QHBoxLayout());
box = new QComboBox;
box->addItems(items);
layout()->addWidget(box);
connect(box, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(colorSelected(const QString&)));
QPushButton* ok = new QPushButton("ok");
layout()->addWidget(ok);
connect(ok, &QPushButton::clicked, this, [this]()
{
accept();
});
}
QComboBox* combobox() { return box; }
private:
QComboBox* box;
};
void Dialog::on_pushButton_clicked()
{
QStringList itemList({"Red", "Blue", "Green"});
CustomDialog dialog(itemList);
// connect(box, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(colorSelected(const QString&)));
if (dialog.exec() == QDialog::Accepted)
{
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QBrush redBrush(Qt::red);
QBrush blackBrush(Qt::black);
QPen blackpen(Qt::black);
blackpen.setWidth(3);
rectangle = scene->addRect(10,10,100,100,blackpen,redBrush);
rectangle->setFlag(QGraphicsItem::ItemIsMovable);
}
}
void Dialog::colorSelected(const QString& text)
{
const QColor selected = colorMap[text];
}
上一篇犯規解決我的問題。
OT:wwWidgets有一個漂亮的顏色選擇組合框。 http://www.wysota.eu.org/wwwidgets/ doc:http://www.wysota.eu.org/wwwidgets/doc/html/qwwcolorcombobox.html – drescherjm
我有我想要使用的預定義顏色。我只是想根據從QT – PSDebugger
的下拉列表中選擇的顏色創建一個矩形,並且有什麼問題?從對話框中獲取選定的顏色並使用它。 – ilotXXI