• QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)


    1.实现文件对话框保存操作

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. }
    9. Widget::~Widget()
    10. {
    11. delete ui;
    12. }
    13. void Widget::on_fontBtn_clicked()
    14. {
    15. //调用QFontDialog类中的静态成员函数,getFont函数来调取系统提供的字体对话框
    16. bool ok; //用于接受用户是否选中了字体
    17. QFont f = QFontDialog::getFont(&ok, //返回是否选中字体
    18. QFont("楷书",10,10,false), //初始字体
    19. this, //父组件
    20. "选择字体"); //对话框标题
    21. //将选中的字体进行使用
    22. if(ok)
    23. {
    24. //选中了字体,将字体设置到文本上
    25. // ui->textEdit->setFont(f);
    26. ui->textEdit->setCurrentFont(f);
    27. }
    28. else
    29. {
    30. //没选中字体
    31. QMessageBox::information(this,"提示","您取消了选择字体");
    32. }
    33. }
    34. //颜色按钮对应的槽函数
    35. void Widget::on_colorBtn_clicked()
    36. {
    37. QColor c = QColorDialog::getColor(QColor("pink"),
    38. this,
    39. "选择颜色");
    40. //对选中的颜色判断合法性
    41. if(c.isValid())
    42. {
    43. //颜色合法。直接使用即可
    44. //ui->textEdit->setTextColor(c);
    45. ui->textEdit->setTextBackgroundColor(c);
    46. }
    47. else
    48. {
    49. //颜色不合法
    50. QMessageBox::information(this,"提示","您取消了选择颜色");
    51. }
    52. }
    53. //打开文件按钮对应的槽函数
    54. void Widget::on_openBtn_clicked()
    55. {
    56. //调用QFileDialog的静态成员函数getOpenFileName来获取选中文件的路径
    57. QString fileName = QFileDialog::getOpenFileName(this, //父组件
    58. "选择文件", //对话框标题
    59. "./", //起始路径
    60. "Image File(*.png *.jpg *bmp);;Text File(*.txt);;All(*.*)"); //过滤器
    61. if(fileName.isNull())
    62. {
    63. QMessageBox::information(this,"提示","您取消了选择文件");
    64. return;
    65. }
    66. //输出文件路径
    67. qDebug() << fileName;
    68. //1、实例化一个文件对象
    69. QFile file(fileName); //使用获取到的文件路径,实例化一个文件对象,后期对文件的操作都是基于该对象
    70. //2、判断文件是否存在
    71. if(!file.exists())
    72. {
    73. return;
    74. }
    75. //3、打开文件
    76. if(!file.open(QFile::ReadOnly))
    77. {
    78. return;
    79. }
    80. //4、读取文件中的内容
    81. QByteArray msg = file.readAll();
    82. //将内容展示到ui界面
    83. ui->textEdit->setText(QString::fromLocal8Bit(msg));
    84. // //获取文本编辑器中的内容
    85. // ui->textEdit->toPlainText();
    86. //5、关闭文件
    87. file.close();
    88. }
    89. void Widget::on_saveBtn_clicked()
    90. {
    91. //调用QFileDialog的静态成员函数getSaveFileName来获取选中文件的路径
    92. QString filename = QFileDialog::getSaveFileName(this, //父组件
    93. "保存文件", //对话框标题
    94. "./", //起始路径
    95. "all file(*.*);;Text(*.txt);;Image(*.png,*.jpg,*.gif)"); //过滤器
    96. if(filename.isNull())
    97. {
    98. QMessageBox::information(this,"提示","您取消了选择文件");
    99. return;
    100. }
    101. //输出文件路径
    102. qDebug() << filename;
    103. //文件操作
    104. QFile file(filename); //使用获取到的文件路径,实例化一个文件对象,后期对文件的操作都是基于该对象
    105. //打开文件
    106. if(!file.open(QFile::Append))
    107. {
    108. return;
    109. }
    110. //获取textEdit中的内容
    111. QString msg = ui->textEdit->toPlainText();
    112. //将textEdit中的内容写入到filename中
    113. file.write(msg.toLocal8Bit());
    114. //关闭文件
    115. file.close();
    116. }

     

    2.实现键盘触发事件(WASD控制小球的移动)

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. }
    9. Widget::~Widget()
    10. {
    11. delete ui;
    12. }
    13. //键盘按下事件处理函数的定义
    14. void Widget::keyPressEvent(QKeyEvent *event)
    15. {
    16. // qDebug() << "键盘被按下了!" << event->text() << "键值为:" << event->key();
    17. switch(event->key())
    18. {
    19. case 'W' :
    20. {
    21. if(ui->label->y() <= 0-ui->label->height())
    22. {
    23. ui->label->move(ui->label->x(),this->height());
    24. }
    25. ui->label->move(ui->label->x(),ui->label->y()-10);
    26. }
    27. break;
    28. case 'S' :
    29. {
    30. if(ui->label->y() >= this->height())
    31. {
    32. ui->label->move(ui->label->x(),0);
    33. }
    34. ui->label->move(ui->label->x(),ui->label->y()+10);
    35. }
    36. break;
    37. case 'A' :
    38. {
    39. if(ui->label->x() <= 0-ui->label->width())
    40. {
    41. ui->label->move(this->width(),ui->label->y());
    42. }
    43. ui->label->move(ui->label->x()-10,ui->label->y());
    44. }
    45. break;
    46. case 'D' :
    47. {
    48. if(ui->label->x() >= this->width())
    49. {
    50. ui->label->move(0,ui->label->y());
    51. }
    52. ui->label->move(ui->label->x()+10,ui->label->y());
    53. }
    54. break;
    55. }
    56. }
    57. //键盘抬起事件处理函数的定义
    58. void Widget::keyReleaseEvent(QKeyEvent *event)
    59. {
    60. }

  • 相关阅读:
    C语言编程
    一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版
    【小沐学写作】程序员必备技能:在线协作文档汇总
    代码中可能会使用
    数据的内存分布笔记总结
    csp 202212-2 训练计划
    10 种创新的智慧废弃物管理技术
    大学生值得珍藏的实用网站推荐
    uniapp项目实战系列(3):底部导航栏与头部导航栏的配置
    热血男孩滕文泽 受邀担任第六季完美童模全球总决赛形象大使
  • 原文地址:https://blog.csdn.net/m0_68542867/article/details/132629398