qml之简单图片浏览器

不念不忘少年蓝@ 2022-06-02 11:21 431阅读 0赞

前面或多或少我们学习了一些qml相关的简单的知识,今天我们就用前面学过的来做一个简单的图片浏览器。代码很简单,里面都有注释,希望对大家有所帮助。

源代码:

  1. import QtQuick 2.10
  2. import QtQuick.Window 2.10
  3. import QtQuick.Controls.Styles 1.4
  4. import QtQuick.Dialogs 1.2
  5. import QtQuick.Controls 2.2
  6. Window {
  7. visible: true
  8. width: 640 //宽度
  9. height: 480 //高度
  10. minimumWidth: 480 //最小宽度
  11. minimumHeight: 320 //最小高度
  12. title: qsTr("QtImageViewer")//窗口标题
  13. //加载动画
  14. BusyIndicator{
  15. id:busy;
  16. running: false;//显示加载动画
  17. anchors.centerIn: parent;//显示在窗体中央
  18. z:2;
  19. }
  20. Text {
  21. id: stateText
  22. visible: false //不可见
  23. anchors.centerIn: parent;
  24. z:3;
  25. }
  26. Image {
  27. id: img;
  28. asynchronous: true; //开启异步加载
  29. cache: false; //不缓存图片
  30. anchors.left: parent.left; //父窗体左边对齐
  31. anchors.leftMargin: 20;
  32. anchors.right: parent.right; //父窗体右边对齐
  33. anchors.rightMargin: 20;
  34. anchors.top: parent.top; //父窗体顶部对齐
  35. anchors.topMargin: 20;
  36. anchors.bottom: openBtn.top;//父窗体底部对齐
  37. anchors.bottomMargin: 10;
  38. fillMode: Image.PreserveAspectFit; //缩放适应
  39. onStatusChanged: {
  40. //加载完成处理
  41. if(img.status == Image.Ready)
  42. {
  43. busy.running = false;
  44. stateText.visible = false;
  45. }
  46. //加载失败处理
  47. else if(img.status == Image.Error)
  48. {
  49. busy.running = false;
  50. stateText.visible = true;
  51. stateText.text = qsTr("加载失败");
  52. }
  53. //加载中处理
  54. else if(img.status == Image.Loading)
  55. {
  56. busy.running = true;
  57. stateText.visible = false;
  58. }
  59. }
  60. }
  61. Button{
  62. id:openBtn;
  63. text: qsTr("浏览");
  64. anchors.left: parent.left;
  65. anchors.leftMargin: 30;
  66. anchors.bottom: parent.bottom;
  67. anchors.bottomMargin: 10;
  68. background: Rectangle{
  69. implicitWidth: 75;//实际宽度
  70. implicitHeight: 30;//实际高度
  71. color: openBtn.hovered ?"#6A6AFF" : "#DDDDFF" ; //鼠标划过颜色
  72. border.width: openBtn.pressed ? 2 : 1; //边框宽度
  73. //边框颜色
  74. border.color: (openBtn.pressed || openBtn.hovered) ?
  75. "green" : "#888888";
  76. }
  77. onClicked: {
  78. fds.open();
  79. }
  80. z:4;
  81. }
  82. Text {
  83. id: imgPath
  84. anchors.left: openBtn.right;
  85. anchors.leftMargin: 10;
  86. anchors.verticalCenter: openBtn.verticalCenter;
  87. font.pointSize: 12;//字体大小
  88. }
  89. FileDialog{
  90. id:fds;
  91. nameFilters: ["图像文件 (*.png *.jpg)"];
  92. onAccepted: {
  93. img.source = fds.fileUrl;//设置图片路径
  94. var path = new String(fds.fileUrl);
  95. imgPath.text = path.slice(8); //截取字符串,从第八位开始
  96. }
  97. }
  98. }

发表评论

表情:
评论列表 (有 0 条评论,431人围观)

还没有评论,来说两句吧...

相关阅读

    相关 QMLImage

    Image控件可以用来显示图片,当然必须是qt支持的图片格式,比如Jpg,Png等等。当然,这里说的图片是静态图片,如果你要显示gif这种格式的图片,那么只能将gif的第一帧显

    相关 QMLButton

    Button控件可以说是最常用的控件之一了,用户点击按钮可能会触发pressed,released,clicked信号,我们可以在qml文档中可以为其指定相应的信号处理器来响应

    相关 qml HelloWorld

    QML是Qt推出的Qt Quick技术的一部分,是一种新增的简便易学的语言。QML是一种陈述性语言,用来描述一个程序的用户界面:无论是什么样子,以及它如何表现。在QML,一个用