View Full Version : ساخت پنجره سفارشی
alireza.alavi2015
شنبه 31 مرداد 1394, 16:00 عصر
چطور میشه پنجره ای مثل تلگرام ایجاد کرد
134541
کامبیز اسدزاده
شنبه 31 مرداد 1394, 18:08 عصر
چطور میشه پنجره ای مثل تلگرام ایجاد کرد
134541
با استفاده از Widget میشه ولی اگه بخوای مثل تلگرام و حتی بهتر از اون باشه QML بهترین گزینه هستش.
alireza.alavi2015
یک شنبه 01 شهریور 1394, 15:54 عصر
مرسی
سورس تلگرام رو دیدم. فقط متوجه شدم میشه؛ دنبال اینم که چطور میشه!
کامبیز اسدزاده
یک شنبه 01 شهریور 1394, 19:54 عصر
مرسی
سورس تلگرام رو دیدم. فقط متوجه شدم میشه؛ دنبال اینم که چطور میشه!
خیلی راحته عزیز ! الان همین کسی که گذاشتی از Item , Rectangle , Button , Text تشکیل شده.
به همین راحتی فقط کافیه یکم خلاقیت در طراحی داشته باشی.
alireza.alavi2015
دوشنبه 02 شهریور 1394, 13:31 عصر
منظورم محتوای درون پنجره نیست. خود پنجره مدنظرمه
Frameless ، قابلیت جابجایی و Resize
روی آیکون سمت چپ و بالای پنجره(واقع در نوار عنوان) کلیک کردید منوی سیستم نمایش داده بشه
چیزی شبیه پنجره تلگرام(فقط خود پنجره نه محتویات...)
در یک کلمه CustomWindow
alireza.alavi2015
دوشنبه 02 شهریور 1394, 13:32 عصر
import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Controls 1.3
ApplicationWindow {
id: rootWin
property alias rootWin : rootWin
title: " "
visible: true
width: 360; height: 480
color: "transparent"
flags: Qt.FramelessWindowHint
Header {
id: header
width: parent.width;
btnQuit.onClicked: Qt.quit()
}
Rectangle {
anchors.top: header.bottom
width: parent.width
anchors.bottom: parent.bottom
color: "white"
border.color: "black"
}
}
alireza.alavi2015
دوشنبه 02 شهریور 1394, 13:32 عصر
import QtQuick 2.4
import QtQuick.Controls 1.3
Rectangle {
id: recHeader
signal clicked()
property alias btnQuit: btnQuit
property point clickPos: Qt.point(0, 0)
color: "#b2cbfb"
height: 50; width: 450
border.color: "black"
MouseArea {
id: mouseAreaDragWin
anchors.fill: parent
onPressed: clickPos = Qt.point(mouse.x, mouse.y)
onPositionChanged: {
var delta = Qt.point(mouse.x -clickPos.x,
mouse.y-clickPos.y )
rootWin.x += delta.x;
rootWin.y += delta.y;
}
//onDoubleClicked: rootWin.showMaximized()
/*onDoubleClicked: rootWin.Maximized ?
rootWin.showNormal() :
rootWin.showMaximized()*/
//TODO : ???
onDoubleClicked: !rootWin.Maximized ? rootWin.showMaximized() : rootWin.showNormal();
ToolButton {
id: btnQuit
anchors.right: parent.right
anchors.rightMargin: 8
anchors.verticalCenter: parent.verticalCenter
onClicked: recHeader.clicked()
iconSource: "close.svg"
}
}
}
alireza.alavi2015
دوشنبه 02 شهریور 1394, 13:35 عصر
http://8pic.ir/images/e6fj0qhsw2wftk160vx6.png
alireza.alavi2015
دوشنبه 02 شهریور 1394, 13:43 عصر
20% کار انجام شد!
alireza.alavi2015
پنج شنبه 12 شهریور 1394, 07:10 صبح
کشف جدید!
واسط کاربری تلگرام با ویجت ها ی کیوت طراحی شده نه با QML
negative60
جمعه 13 شهریور 1394, 12:32 عصر
کشف جدید!
واسط کاربری تلگرام با ویجت ها ی کیوت طراحی شده نه با QML
اين رو من تو تاپيک قبلی هم گفته بودم اما ظاهراً کسی اين مسئله رو قبول نکرده بود
با QML ميشه پنجره اختصاصی ساخت اما مشکلاتی اساسی وجود داره مثل پر پر زدن پنجره، موقع تغيير اندازه پنجره ابجکتهای درون پنجره ديرتر از قالب پنجره موقعيت و سايزشون تغيير ميکنه، و همچنين در ويندوز امکان استفاده از سايه برای پنجره وجود نداره
حامد مصافی
جمعه 13 شهریور 1394, 17:22 عصر
قبلا این کار رو کردم. قسمتهای مرتبط رو از یکی از پروژههام بیرون کشیدم. میتونید از این مثال استفاده کنید،
من پروژه حاضر رو به عنوان نمونه عرضه میکنم، در مورد استفاده از سورس کاملا آزادید فقط اگر خواستید در برنامهتون استفاده کنید حتما تصاویر تم رو عوض کنید.
alireza.alavi2015
شنبه 14 شهریور 1394, 13:45 عصر
SendMessage(
(HWND)_parent->winId(),
WM_NCLBUTTONDOWN,
//ظاهرا متغیر زیر تعریف نشده است. بجاش صفر نوشتم کار کرد
//اما پنجره ریسایز نمیشه
pos, // 0
0);
}
134989
alireza.alavi2015
شنبه 14 شهریور 1394, 13:50 عصر
با QML ميشه پنجره اختصاصی ساخت اما مشکلاتی اساسی وجود داره مثل پر پر زدن پنجره، موقع تغيير اندازه پنجره ابجکتهای درون پنجره ديرتر از قالب پنجره موقعيت و سايزشون تغيير ميکنه، و همچنين در ويندوز امکان استفاده از سايه برای پنجره وجود نداره
به نظر من حق با شماست
هنوز هیچ پروژه درست و حسابی از شرکت های تجاری که با QML پیاده سازی شده باشه ندیدم یا حداقل انگشت شمار هست
حامد مصافی
شنبه 14 شهریور 1394, 16:04 عصر
من هنگام نوشتن این کلاس تصمیم داشتم از امکانات Win API در محیط ویندوز و از کدنویسیهایی که انجام دادم برای سایر محیطها استفاده کنم. اما قسمت ویندوز رو هرگز تمام نکردم. متاسفانه هنگامی که داشتم پروژه رو برای شما آماده میکردم این مسأله یادم نبود و مجدداً ویندوز رو فعال کردم. ضمن پوزش نسخه اصلاح شده که در همه محیطها کار کنه رو مجدداً ارائه میکنم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.