#ifndef GQT_H #define GQT_H #include #include #include template class Wrp{ public: T *obj; Wrp(T *obj = nullptr){ this->obj = obj; }; inline Wrp& operator()(T *obj){ this->obj = obj; return *this; } inline Wrp& operator()(T *obj, QLayout *layout){ this->obj = obj; layout->addWidget(obj); return *this; } inline Wrp& addTo(QLayout *layout){ layout->addWidget(obj); return *this; } inline Wrp& margin(int a){ obj->setMargin(a); return *this; } inline Wrp& font(const QFont &font){ obj->setFont(font); return *this; } inline Wrp& font(int size){ QFont font = obj->font(); font.setPointSize(size); obj->setFont(font); return *this; } inline Wrp& width(int w){ obj->setFixedWidth(w); return *this; } inline Wrp& height(int h){ obj->setFixedHeight(h); return *this; } inline Wrp& padding(int wAdd, int hAdd, int minW = 32, int minH = 16){ wAdd+=8; hAdd+=8; QSize size = obj->fontMetrics().size(Qt::TextShowMnemonic, obj->text()); int &rwidth = size.rwidth(); rwidth += wAdd; if(rwidth < minW) rwidth = minW; int &rheight = size.rheight(); rheight += hAdd; if(rheight < minH) rheight = minH; obj->setFixedSize(size); return *this; } inline Wrp& alignC(){ obj->setAlignment(Qt::AlignCenter); return *this; } inline Wrp& alignR(){ obj->setAlignment(Qt::AlignRight); return *this; } inline Wrp& connStart(){ QObject::connect(obj, &QThread::finished, obj, &QThread::deleteLater); obj->start(); return *this; } }; template inline QThread *ThreadStart(Func &&f) { QThread* thread = QThread::create(f); QObject::connect(thread, &QThread::finished, thread, &QThread::deleteLater); thread->start(); return thread; } #endif