作者MOONY135 (谈无慾)
看板C_and_CPP
标题[问题] 请问仪表板功能要怎样做会比较好呢?
时间Tue Nov 22 16:56:00 2016
开发平台(Platform): (Ex: Win10, Linux, ...)
vs 2015
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
qt
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
我需要做一个仪表板
类似这样
https://www.microsoft.com/zh-tw/dynamics/crm-customer-center/Tile_buttons.PNG
我目前是自己写一个widget(widget.cpp)
然後在主ui(dashboard.cpp)把他塞进一个QFrame
这是我最後的结果
http://imgur.com/WupfSts
不知道还能不能有更好的写法呢?
=========dashboard.cpp=====
dashboard::dashboard(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
s1 = new QSlider(this);
s1->setGeometry(450, 150, 20, 100);
w1 = new Widget(ui.frame);
ui.frame->setStyleSheet("QFrame{border-image:url(Image/back.PNG)}");
w1 ->resize(400, 400);
connect(s1, SIGNAL(valueChanged(int)), w1, SLOT(setProgress(int)));
connect(s1, SIGNAL(valueChanged(int)), w2, SLOT(setProgress(int)));
}
=======widget.cpp=============
void Widget::paintEvent(QPaintEvent *)
{
QPainter p(this);
QPen pen;
pen.setWidth(10);
pen.setStyle(Qt::DotLine);
p.setPen(pen);
p.setRenderHint(QPainter::Antialiasing);
QRectF rectangle(5.0, 5.0, 200.0, 200.0);
int startAngle = 180 * 16;
int spanAngle = -progress * 360 * 8;
//qDebug() << "progress: " << progress;
p.drawArc(rectangle, startAngle, spanAngle);
p.drawText(rectangle, Qt::AlignCenter, QString::number(progress * 100) + "
%");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.124.46.66
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1479804963.A.E26.html
1F:推 TobyH4cker: 我想像中的仪表板 vs 我的仪表板 11/22 21:14
2F:→ TobyH4cker: 应该是画两个半径不同的扇形相减?没经验只是想法 11/22 21:15
3F:推 EdisonX: goo.gl/2wBD2z 11/22 23:58
4F:推 soheadsome: 怎麽不用qml..... 11/23 12:51