我有子类QDialog
实现类似的功能QMessageBox
(我需要这个以允许自定义).它有一条短信和OK,取消按钮.我正在显示对话框exec()
以使其阻止.现在,当用户单击"确定/取消"时,如何返回true/false值?
我尝试将按钮连接到setResult()
然后,单击时返回结果值,但是1.单击按钮不会关闭对话框2.返回值不正确.以下是我写的代码.我认为我在exec/result部分错了 - 但我不知道如何解决它.
class MyMessageBox : public QDialog {
Q_OBJECT
private slots:
void onOKButtonClicked() { this->setResult(QDialog::Accepted); }
void onCancelButtonClicked() { this->setResult(QDialog::Rejected); }
public:
MyMessageBox(QMessageBox::Icon icon, const QString& title,
const QString& text, bool showCancelButton = true,
QWidget* parent = 0);
virtual void resizeEvent(QResizeEvent* e);
QDialog::DialogCode showYourself()
{
this->setWindowModality(Qt::ApplicationModal);
this->exec();
return static_cast<QDialog::DialogCode>(this->result());
}
};
Run Code Online (Sandbox Code Playgroud)
用户将实例化该类并调用showYourself(),它将返回该值并关闭(并删除)该对话框.
我发布了部分代码.如果您需要更多,请告诉我,我会发布完整版本.
这个问题特定于opencv:opencv文档中给出的kmeans示例有一个双通道矩阵 - 特征向量的每个维度都有一个通道.但是,其他一些例子似乎表明它应该是一个单通道矩阵,沿着列有特征,每个样本有一行.哪个是对的?
如果我有一个5维特征向量,我应该使用的输入矩阵:这一个:
cv::Mat inputSamples(numSamples, 1, CV32FC(numFeatures))
Run Code Online (Sandbox Code Playgroud)
或者这个:
cv::Mat inputSamples(numSamples, numFeatures, CV_32F)
Run Code Online (Sandbox Code Playgroud) 我需要自定义QMessageBox。我需要删除框架和标题栏并添加我自己的标题栏和关闭按钮。还需要更换标准按钮,并可能重做框的背景颜色。
是否可以对其进行子类化并实现上述目标?有这方面的例子吗?或者,我应该继承 Dialog 并创建自己的消息框吗?