qwdialogpen.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include "qwdialogpen.h"
  2. #include "ui_qwdialogpen.h"
  3. #include <QColorDialog>
  4. // 若MSVC 编译版本错误,修改 msvc-version.conf 文件
  5. // 解决MSVC编译时,界面汉字乱码的问题
  6. #if _MSC_VER >= 1600 //MSVC2015>1899, MSVC_VER= 14.0
  7. #pragma execution_character_set("utf-8")
  8. #endif
  9. QWDialogPen::QWDialogPen(QWidget *parent) :
  10. QDialog(parent),
  11. ui(new Ui::QWDialogPen)
  12. {
  13. ui->setupUi(this);
  14. //“线型”ComboBox的选择项设置
  15. ui->comboPenStyle->clear();
  16. ui->comboPenStyle->addItem("NoPen",0);
  17. ui->comboPenStyle->addItem("SolidLine",1);
  18. ui->comboPenStyle->addItem("DashLine",2);
  19. ui->comboPenStyle->addItem("DotLine",3);
  20. ui->comboPenStyle->addItem("DashDotLine",4);
  21. ui->comboPenStyle->addItem("DashDotDotLine",5);
  22. ui->comboPenStyle->addItem("CustomDashLine",6);
  23. ui->comboPenStyle->setCurrentIndex(1);
  24. }
  25. QWDialogPen::~QWDialogPen()
  26. {
  27. delete ui;
  28. }
  29. void QWDialogPen::setPen(QPen pen)
  30. { //设置QPen,并刷新显示界面
  31. m_pen=pen;
  32. ui->spinWidth->setValue(pen.width()); //线宽
  33. int i=static_cast<int>(pen.style()); //枚举类型转换为整型
  34. ui->comboPenStyle->setCurrentIndex(i);
  35. QColor color=pen.color();
  36. ui->btnColor->setAutoFillBackground(true); //设置颜色按钮的背景色
  37. QString str=QString::asprintf("background-color: rgb(%d, %d, %d);",
  38. color.red(),color.green(),color.blue());
  39. ui->btnColor->setStyleSheet(str);
  40. }
  41. QPen QWDialogPen::getPen()
  42. {//获得设置的属性
  43. m_pen.setStyle(Qt::PenStyle(ui->comboPenStyle->currentIndex())); //线型
  44. m_pen.setWidth(ui->spinWidth->value()); //线宽
  45. QColor color;
  46. color=ui->btnColor->palette().color(QPalette::Button);
  47. m_pen.setColor(color); //颜色
  48. return m_pen;
  49. }
  50. QPen QWDialogPen::getPen(QPen iniPen,bool &ok)
  51. { //静态函数,获取QPen
  52. QWDialogPen *Dlg=new QWDialogPen; //创建一个对话框
  53. Dlg->setPen(iniPen); //设置初始化QPen
  54. QPen pen;
  55. int ret=Dlg->exec(); //弹出对话框
  56. if (ret==QDialog::Accepted)
  57. {
  58. pen=Dlg->getPen(); //获取
  59. ok=true; }
  60. else
  61. {
  62. pen=iniPen;
  63. ok=false; }
  64. delete Dlg; //删除对话框对象
  65. return pen; //返回设置的QPen对象
  66. }
  67. void QWDialogPen::on_btnColor_clicked()
  68. {//设置颜色
  69. QColor color=QColorDialog::getColor();
  70. if (color.isValid())
  71. { //用样式表设置QPushButton的背景色
  72. QString str=QString::asprintf("background-color: rgb(%d, %d, %d);",
  73. color.red(),color.green(),color.blue());
  74. ui->btnColor->setStyleSheet(str);
  75. }
  76. }