Qt标准对话框

QMessageBox
  QMessageBox::information。代码中这样使用:

   QMessageBox::information(NULL, “Title”, “Content”, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

首先,它是static的,所以我们能够使用类名直接访问到(怎么看都像废话…);然后看它那一堆参数,第一个参数parent,说明它的父组件;第二个参数title,也就是对话框的标题;第三个参数text,是对话框显示的内容;第四个参数buttons,声明对话框放置的按钮,默认是只放置一个OK按钮,这个参数可以使用或运算,例如我们希望有一个Yes和一个No的按钮,可以使用QMessageBox::Yes | QMessageBox::No,所有的按钮类型可以在QMessageBox声明的StandarButton枚举中找到;第五个参数defaultButton就是默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。
  其他用法:
QMessageBox::critical(NULL, “critical”, “Content”, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

QMessageBox::warning(NULL, “warning”, “Content”, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

QMessageBox::question(NULL, “question”, “Content”, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

QMessageBox::about(NULL, “About”, “About this application”);

QColorDialog
  使用QColorDialog也很简单,Qt提供了getColor()函数,类似于QFileDialog的getOpenFileName(),可以直接获得选择的颜色。我们还是使用前面的QAction来测试下这个函数:
  QColor color = QColorDialog::getColor(Qt::white, this);
  QString msg = QString(“r: %1, g: %2, b: %3″).arg(QString::number(color.red()), QString::number(color.green()), QString::number(color.blue()));
  QMessageBox::information(NULL, “Selected color”, msg);
  
  第一行QColorDialog::getColor()调用了QColorDialog的static函数getColor()。这个函数有两个参数,第一个是QColor类型,是对话框打开时默认选择的颜色,第二个是它的parent。

  第二行比较长,涉及到QString的用法。如果我没记错的话,这些用法还没有提到过,本着“有用就说”的原则,尽管这些和QColorDialog毫不相干,这里还是解释一下。QString(“r: %1, g: %2, b: %3″)创建了一个QString对象。我们使用了参数化字符串,也就是那些%1之类。在Java的properties文件中,字符参数是用{0}, {1}之类实现的。其实这都是一些占位符,也就是,后面会用别的字符串替换掉这些值。占位符的替换需要使用QString的arg()函数。这个函数会返回它的调用者,因此可以使用链式调用写法。它会按照顺序替换掉占位符。然后是QString::number()函数,这也是QString的一个static函数,作用就是把int、double等值换成QString类型。这里是把QColor的R、G、B三个值输出了出来。关于QString类,我们会在以后详细说明。

  第三行就比较简单了,使用一个消息对话框把刚刚拼接的字符串输出。

  现在就可以运行这个测试程序了。看上去很简单,不是吗?

  QColorDialog还有一些其他的函数可以使用。

  QColorDialog::setCustomColor()可以设置用户自定义颜色。这个函数有两个值,第一个是自定义颜色的索引,第二个是自定义颜色的RGB值,类型是QRgb,大家可以查阅API文档来看看这个类的使用,下面只给出一个简单的用发:
  QColorDialog::setCustomColor(0, QRgb(0×0000FF));

QFileDialog
  关于QFileDialog就光贴代码吧,其中的参数啥的都可以自己领悟,重载啊啥的帮助文档里也都有。
  QFileDialog *fileDialog = new QFileDialog(this);
   fileDialog->setWindowTitle(tr(“Open Image”));
   fileDialog->setDirectory(“.”);
   fileDialog->setFilter(tr(“Image Files(*.jpg *.png)”));
   if(fileDialog->exec() == QDialog::Accepted) {
   QString path = fileDialog->selectedFiles()[0];
   QMessageBox::information(NULL, tr(“Path”), tr(“You selected “) + path);
   } else {
   QMessageBox::information(NULL, tr(“Path”), tr(“You didn’t select any files.”));
   }


超越C++原创文章,转载请注明来源并保留原文链接

本文链接:http://www.beyondc.cn/qt-dialog.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值