[SOLVED] فرم کریستالی ... !



  • p{direction:rtl; text-align:right}. بچه ها چطور میتونم فرمم رو کریستالی کنم و یا چطور میتونم داخل بخش کریستالی فرم widget قرار بدم
    همچین چیزی با کیوت امکان داره ... ؟
    اصلا خودتون عکس رو ببینید
    !http://uploadtak.com/images/u3416_Capture.gif(Crystal)!



  • It's not matter of Qt
    Use WIN32 API to obtain such a platform-specific feature.



  • p{direction:rtl; text-align:right}. واقعا نمیشه ... !
    یعنی باید از API استفاده کنم ... ؟
    ولی داخل C# من این کار رو میکنم ... بدون استفاده از API !



  • p{direction:rtl; text-align:right}. چرا با سی‌شارپ برنامه‌تو نمی‌نویسی؟



  • [quote author="soroush" date="1357408994"]p{direction:rtl; text-align:right}. چرا با سی‌شارپ برنامه‌تو نمی‌نویسی؟[/quote]

    p{direction:rtl; text-align:right}. سروش جان من دارم با کیوت برنامه مینویسم حالا برم با c# بنویس
    c# رو یاد گرفتم برا پول در آوردن و کیوت رو برا کار های بزرگ و ... (بهم انرژی میده (مثل دارو های نیرو زا)) این برنامه ای که میخام بنویسم بزرگه ... میدونی که ... !



  • p{direction:rtl; text-align:right}. سلام
    منظورتون اینکه می خواهید فرمتون بشکل دلخواه باشه ؟ یا شفاف باشه ؟
    خوب خیلی ساده است . اول paint ويدجت رو خودتون باید دست بگیرید و یک تصویر با هر شکل دلخواه که البته باید سطح الفا هم داشته باشه رو روی ویجت بکشید . بعد تو کانستراکت ویجت هم کافیته مقدار Qt::WA_TranslucentBackground و Qt::FramelessWindowHint رو setAttribute كنيد.برای تب هم خیلی ساده با stylesheet مي تونيى به همين شكل در بارید.



  • [quote author="hdeldar" date="1357410531"]p{direction:rtl; text-align:right}. سلام
    منظورتون اینکه می خواهید فرمتون بشکل دلخواه باشه ؟ یا شفاف باشه ؟
    خوب خیلی ساده است . اول paint ويدجت رو خودتون باید دست بگیرید و یک تصویر با هر شکل دلخواه که البته باید سطح الفا هم داشته باشه رو روی ویجت بکشید . بعد تو کانستراکت ویجت هم کافیته مقدار Qt::WA_TranslucentBackground و Qt::FramelessWindowHint رو setAttribute كنيد.برای تب هم خیلی ساده با stylesheet مي تونيى به همين شكل در بارید.[/quote]

    p{direction:rtl; text-align:right}. روش درستی نیست.

    [quote author="Abbas Naghdi" date="1357409494"]
    [quote author="soroush" date="1357408994"]p{direction:rtl; text-align:right}. چرا با سی‌شارپ برنامه‌تو نمی‌نویسی؟[/quote]

    p{direction:rtl; text-align:right}. سروش جان من دارم با کیوت برنامه مینویسم حالا برم با c# بنویس
    c# رو یاد گرفتم برا پول در آوردن و کیوت رو برا کار های بزرگ و ... (بهم انرژی میده (مثل دارو های نیرو زا)) این برنامه ای که میخام بنویسم بزرگه ... میدونی که ... ! [/quote]

    p{direction:rtl; text-align:right}. Qt یک فریم‌ورک چندسکویی است. یک کد می‌نویسی توی ۱۰ تا سیستم‌عامل اجرا می‌کنی. الان انتظار داری برای API ویندوز یک API اضافی هم بدن برات؟ یک لایهٔ کاملاً اضافی و سربار که فقط کدنویسی‌تو راحت‌تر می‌کنه؟



  • p{direction:rtl; text-align:right}. چند تا برنامه برای ویندوز و لینوکس به این روشی که گفتم نوشتم و اشکال اجرایی تا حالا گزارش نشده .سرعتش هم بد نیست ولی تو ریسایز تو ویندوز یک تریکی زدم و سرعت رو بردم بالا. اما اگر این روش اشکال اساسیی ممکنه داشته باشه بهم بگید خیلی خوشحال میشم



  • [quote author="hdeldar" date="1357411163"]p{direction:rtl; text-align:right}. چند تا برنامه برای ویندوز و لینوکس به این روشی که گفتم نوشتم و اشکال اجرایی تا حالا گزارش نشده .سرعتش هم بد نیست ولی تو ریسایز تو ویندوز یک تریکی زدم و سرعت رو بردم بالا. اما اگر این روش اشکال اساسیی ممکنه داشته باشه بهم بگید خیلی خوشحال میشم [/quote]

    p{direction:rtl; text-align:right}. چیزی رو که وجود داره با یه چیز جدید داری جایگزین می‌کنی. توی ویندوز سیستم Window management ،هست. و باهاش می‌شه هر بلایی سر پنجره‌ها و ضاهر برنامه‌ها دراورد. میشه شکل دکمه‌های کنترلی رو عوض کرد نوار عنوان پنجره‌ها رو رنگارنگ کرد و از این جینگولک کاری‌ها. حالا با استفاده از همون API داری titlebar رو حدف می‌کنی که خودت دوباره نقاشی‌ش کنی.



  • [quote author="hdeldar" date="1357410531"]p{direction:rtl; text-align:right}. سلام
    منظورتون اینکه می خواهید فرمتون بشکل دلخواه باشه ؟ یا شفاف باشه ؟
    خوب خیلی ساده است . اول paint ويدجت رو خودتون باید دست بگیرید و یک تصویر با هر شکل دلخواه که البته باید سطح الفا هم داشته باشه رو روی ویجت بکشید . بعد تو کانستراکت ویجت هم کافیته مقدار Qt::WA_TranslucentBackground و Qt::FramelessWindowHint رو setAttribute كنيد.برای تب هم خیلی ساده با stylesheet مي تونيى به همين شكل در بارید.[/quote]

    p{direction:rtl; text-align:right}. یکم توضیح بیشتر میدی ... ؟



  • p{direction:rtl; text-align:right}. من کرسیتالی رو برای ویندوز میخام ... آخه لینوکس کریستالی واسه چیشه ... !
    من میخام یه دکمه داخل بخش کریستالی بزارم
    اگه میشه چطوری ... ؟
    اگه نمیشه که بازم چطوری title رو حذف کنم و دوباره خودم بسازم و ...



  • p{direction:rtl;text-align:right}. جالبه اتفاقا چند روز پیش این مطلب رو داشتم مطالعه میکردم و بوکمارکش کردم.
    http://blog.qt.digia.com/blog/2009/09/15/using-blur-behind-on-windows

    p{direction:rtl;text-align:right}. سورس
    http://chaos.troll.no/~jbache/blurbehind.zip



  • p{direction:rtl; text-align:right}. یک برنامه خیلی ساده پایین نوشتم که تو سازنده ویجتتون کافیه دو خط کد و یک لود تصویر رو انجام بدید :
    @
    Widget::Widget(QWidget *parent)
    : QWidget(parent)
    {
    QWidget::setWindowFlags( Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground, true);
    bgPixmap.load("../background.png");
    }
    @

    p{direction:rtl; text-align:right}. توی تابع paintEvent هم که یک تابع virtual هست هم كافيه اون تصویر رو روی ویجتت بکشی

    @
    void Widget::paintEvent(QPaintEvent *event)
    {
    QPainter painter(this);
    painter.drawPixmap(0,0,bgPixmap);
    }
    @

    p{direction:rtl; text-align:right}. برای تغییر شکل برنامه خودمون منطقی نیست کل ویندوز رو بهم بریزیم.



  • p{direction:rtl; text-align:right}. مرسی بچه ها چیزی که میخاستم شد



  • p{direction:rtl; text-align:right;font-family:tahoma}. دقت کنید که اگر از FramelessWindowHint استفاده کنید پنجره امکان Minimize شدن رو نخواهد داشت و SplashScreen هم باعث میشه که آیکن برنامه در Taskbar نمایش داده نشه!



  • p{direction:rtl; text-align:right}. بله تو کد بالا حذف کردم . اگر بطور کامل مشکلتون حل شده بهتره تو ابتدای عنوان تاپیک عبارت [SOLVED] اضافه کنید


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.