ドロップダウンリストから色を選択したいのですが、その色に基づいてウィンドウに矩形を描きたいと思います。 私はあらかじめ定義された色で矩形を描画できますが、どのようにコンボボックスから色を渡すことができないのか分かりません。 ウィンドウに描画される矩形は1つのみです。ウィンドウに複数の矩形を描画します。QT-コンボボックスから色を選択して矩形を描く
したがって、手順は次のようになります。ユーザーはプッシュボタンをクリックします - >コンボボックスが表示されます--->色を選択 - > OKをクリックすると、その色の四角形がウィンドウに表示されます。
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];
}
前のポストdoesntのは、私の質問を解決します。
OT:wwWidgetsは素敵なカラーチューコンボボックスがあります。 http://www.wysota.eu.org/wwwidgets/ doc:http://www.wysota.eu.org/wwwidwiki/doc/html/qwwcolorcombobox.html – drescherjm
私は私が使用したい私の定義済みの色を持っています。私はちょうどQTのドロップダウンから選択された色に基づいて矩形を作成したい – PSDebugger
そして何が問題なのですか?ダイアログから選択した色を取得して使用します。 – ilotXXI