我想从下拉列表中选择颜色,并根据我想在窗口上绘制矩形的颜色。 我可以绘制一个预定义颜色的矩形,但不知道如何从组合框中传递颜色。 窗口上只绘制了一个矩形,我想在窗口上绘制多个矩形。
所以程序就像这样。用户将点击按钮 - >组合框出现--->选择颜色 - >单击“确定”,窗口中将显示该颜色的矩形。
Dialog.cpp
add_filter('document_title_parts', 'dq_override_post_title', 10);
function dq_override_post_title($title){
// change title for singular blog post
if( is_singular( 'post' ) ){
// change title parts here
$title['title'] = 'EXAMPLE';
$title['page'] = '2'; // optional
$title['tagline'] = 'Home Of Genesis Themes'; // optional
$title['site'] = 'DevelopersQ'; //optional
}
return $title;
}
上一篇文章没有解决我的问题。
答案 0 :(得分:0)
如果您对颜色选择器不感兴趣,并且想要使用QComboBox
自己的解决方案,则可以预先定义自己想要使用的颜色集。
你可以声明一个地图,例如QMap<QString, QColor> colors;
,它将颜色值保存在用字符串描述它的键下。
然后你应该定义所需的值。例如:
colors =
{
{"Red", QColor(255, 0, 0)},
{"Green", QColor(0, 255, 0)},
{"Blue", QColor(0, 0, 255)},
};
您可以轻松使用此地图填充QComboBox
的内容。这写得很快:
box->addItems(colors.keys());
下一步操作取决于您何时需要知道颜色值。如果您想在用户选择它之后立即知道它,您需要做出正确的connect
。例如:
connect(box, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(colorSelected(const QString&)));
其中colorSelected
是您处理所选颜色值的插槽:
void Dialog::colorSelected(const QString& text)
{
const QColor selected = colors[text];
// do what you need with the color
}
答案 1 :(得分:0)
除了上述内容之外,我建议使用项目数据来保存颜色定义。看看:
QComboBox::setItemData
QComboBox::itemData
QComboBox::currentData
组合框中的每个项目都有两个组件;有显示的文本,然后是一个相关的QVariant,它是项目数据。 QVariant可以保存您的颜色定义,这样您就不必单独存储它们。实际上,它不止两个,因为您可以根据需要定义任意数量的用户角色,这样您就可以为每个组合框项目存储更多数据元素。但是,出于您的目的,默认的UserRole就足够了。
您的colorSelected定义将是:
void Dialog::colorSelected (const QString &text)
{
const QColor selected = box->currentData().value <QColor> ();
// do what you need with the color
}