ورود

View Full Version : قابلیت تغییر اندازه دادن به تمام حاشیه ها پس از استفاده از دستور FramelessWindowHint در WindowFlag



chikar
دوشنبه 01 دی 1393, 18:58 عصر
سلام
می خواستم بعد از استفاده از دستور
setWindowFlags(Qt::FramelessWindowHint); // in qt

بتونم تمام حاشیه های (borders) پنجره ام (window or widget) رو قابل تغییر اندازه (resize) کنم مثل یک پنجره معمولی ویندوز
من همچنین از QSizeGrip هم به طوری که فقط راست و سمت پایین و یا یک گوشه خاص رو قابل تغییر اندازه بکنه، نمی خوام استفاده کنم و می خوام تمام حاشیه پنجره امT، مثل یک خواص یک پنجره معمولی بشه و کرسر موس تغییر پیدا کنه و در نهایت قابل تغییر اندازه ببشه
من از دو رویداد mousePressEvent و mouseMoveEvent برای استفاده از قابلیت انتقال صفحه (move) به راحتی استفاده می کنم مطابق زیر:



void MainWindow::mousePressEvent(QMouseEvent *event)
{

if (event->button() == Qt::LeftButton) {
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}

}




void MainWindow::mouseMoveEvent(QMouseEvent *event)
{

if (event->buttons() & Qt::LeftButton) {
move(event->globalPos() - dragPosition);
topPos=event->globalPos() - dragPosition;
event->accept();
}

}


ضمناً آدرس سایت خارجی ندید که قبلا همش رو گشتم یا به دردم نمی خورده و یا نفهمیدم چی شده!!! // مرسی

chikar
پنج شنبه 04 دی 1393, 21:23 عصر
بعد از کلی گشت و گذار یه کلاس برای این کار پیدا کردم که هم قابلیت انتقال (move) و هم قابلیت تغییر اندازه (resize) رو برای شما فراهم می کنه.
کلاس از نوع QObject هست و فقط کافیه شما اون رو به برنامه تون اضافه کنید و داخل main پروژتون حالا از هر نوع که می خواد باشه (mainwindow-widget-dialog) کد زیر رو اضافه کنید:
مثال استفاده از کلاس NcFramelessHelper برای پروژه mainwindow:

#include "mainwindow.h"
#include <QApplication>
#include "NcFramelessHelper.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
NcFramelessHelper fh;
fh.activateOn(&w);
w.show();

return a.exec();
}



دانلود کلاس (http://chikar.persiangig.com/my_qt/frameless_class.rar/download?5d96)

فکر کنم فقط بخش کیوت هست که هر کس خودش سوال می کنه و خودش هم جواب می ده، یه نفر حتی نشد یه جواب ساده تو این سایت برای سوالات ما بده، که ما دلمون خوش بشه بگیم حداقل کسی یه جواب داده !!!
بابا اینجا برای کمک به هم درست شده ...