드롭 다운에서 색상을 선택하고 해당 색상을 기준으로 창에 직사각형을 그립니다. 미리 정의 된 색상으로 사각형을 그릴 수는 있지만 콤보 박스에서 색상을 전달하는 방법을 모릅니다. 창이 하나의 직사각형으로 그려지기 때문에 창에 여러 개의 직사각형을 그려야합니다.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/wwwidwiki/html/qwwcolorcombobox.html – drescherjm
내가 사용하고 싶은 미리 정의 된 색상이 있습니다. QT의 드롭 다운에서 선택한 색상을 기준으로 사각형을 만들고 싶습니다. – PSDebugger
그리고 무엇이 문제입니까? 대화 상자에서 선택한 색상을 가져 와서 사용하십시오. – ilotXXI