qt怎样实现如下界面

方法一:Qt Widgets文字内容为两个QLabel垂直布局,分别设置字号和颜色,然后多组文字内容用水平布局,中间用Splitter分割,可以完美实现。要写死的话,利用Qt Designer可以直接拖控件做出来;要动态的话,可以写个类或者函数负责根据输入数据生成这么一组控件Button的自定义,通过修改样式表实现。可以在代码里根据需求动态生成stylesheet,也可以在Qt Designer里直接写死。其中有图标那个设置按钮必须用QToolButton,其他几个可以用QToolButton也可以用QPushButton。详见http://doc.qt.io/qt-5/stylesheet.html表格中单元格内容的自定义显示。利用Qt的Model-View-Delegate机制,继承实现自定义的QAbstractItemDelegate类,在paint()接口中使用QPainter绘制单元格。详见http://doc.qt.io/qt-5/qtwidgets-itemviews-coloreditorfactory-example.html http://doc.qt.io/qt-5/model-view-programming.htmlhttp://doc.qt.io/qt-5/qpainter.html其中,第三点可以适用于所有自定义控件场景,即用QPainter手绘控件。方法二:Qt Qml题主给的这个界面原型,其实是偏重于现在互联网领域的移动和web设计风格,所以更推荐采用这个领域的声明式界面编程Qt也提供了如html+css+js一样,通过脚本编写,以声明式的思路设计界面的机制,那就是Qt Qml,可以做到想怎么写就怎么写,想长啥样就长啥样不过你需要一个web前端队友,懂css和js的那种——因为Qml的语法其实就是css+jsQml可以做到什么程度呢?可以看看这些demohttp://doc.qt.io/qt-5/qtcharts-qmlweather-example.htmlhttp://doc.qt.io/qt-5/qtcharts-qmloscilloscope-example.htmlhttps://doc-snapshots.qt.io/qt5-5.6/qt3d-planets-qml-example.html更多的,可以在Qt Creator的欢迎界面的“示例”中搜索“qml quick”============================方法一,第3点补充今天想了下,可以不需要手写paint那么麻烦。Qt的view item的data是可以指定Role的,文本内容是Qt::displayRole或者Qt::editRole,而图中的效果,可以通过指定颜色实现model-\u0026gt;setData(index, text, Qt::DisplayRole);model-\u0026gt;setData(index, Qt::white, Qt::TextColorRole);model-\u0026gt;setData(index, Qt::darkGreen, Qt::BackGroundColorRole);这样就可以很直观的实现自定义单元格了


    推荐阅读