View Full Version : سوال: کلاس های گرافیکی را چگونه در پنجره اصلی اعمال کنیم؟
motherboard
سه شنبه 17 تیر 1393, 22:32 عصر
سلام.من تو کلاس های گرافیکی یک مشکلی دارم و اون اینه که نمیدونم توابعشون رو چگونه در صفحه اصلی (QMainWindow) اعمال کنم.ببینید مثلا با استفاده از QVBoxLayout میایم ویجت رو (مثل دکمه و غیره) رو ایجاد و با استفاده از یک setLayout هر انچه که ساختیم رو روی صفحه اصلی برنامه اعمال می کنیم.اما با setLayout نتونستم شی هایی که از کلاس های گرافیکی ایجاد کردم روی پنجره اصلی نمایش بدم.در واقع با استفاده از setLayout می تونم دکمه و لیبل و غیره رو نمایش بدم اما شی هایی که از کلاس های گرافیکی(بدون open gl)رو که می سازم نمیتونم به پنجره اصلی مرتبط کنم و اون ها رو نمایش بدم.کسی در این مورد چیزی می دونه؟
مثلا کد ساده زیر رو ببینید که با setLayout میشه یک سری دکمه و از این جور چیزها رو به پنجره اصلی مرتبط کردیم.اما در کلاس های گرافیکی نمیدونم چه چیزی شی های گرافیکی رو به پنجره اصلی مرتبط می کنه؟
#include <QtGui> #include<QtWidgets> int main(int argc, char** argv) { QApplication app(argc, argv); QWidget* window=new QWidget; QVBoxLayout*box=new QVBoxLayout; QPushButton*button=new QPushButton ; box->addWidget(button); window->setLayout(box); window->show(); return app.exec(); }
MRmoon
پنج شنبه 19 تیر 1393, 15:18 عصر
سلام.من تو کلاس های گرافیکی یک مشکلی دارم و اون اینه که نمیدونم توابعشون رو چگونه در صفحه اصلی (QMainWindow) اعمال کنم.ببینید مثلا با استفاده از QVBoxLayout میایم ویجت رو (مثل دکمه و غیره) رو ایجاد و با استفاده از یک setLayout هر انچه که ساختیم رو روی صفحه اصلی برنامه اعمال می کنیم.اما با setLayout نتونستم شی هایی که از کلاس های گرافیکی ایجاد کردم روی پنجره اصلی نمایش بدم.در واقع با استفاده از setLayout می تونم دکمه و لیبل و غیره رو نمایش بدم اما شی هایی که از کلاس های گرافیکی(بدون open gl)رو که می سازم نمیتونم به پنجره اصلی مرتبط کنم و اون ها رو نمایش بدم.کسی در این مورد چیزی می دونه؟
مثلا کد ساده زیر رو ببینید که با setLayout میشه یک سری دکمه و از این جور چیزها رو به پنجره اصلی مرتبط کردیم.اما در کلاس های گرافیکی نمیدونم چه چیزی شی های گرافیکی رو به پنجره اصلی مرتبط می کنه؟
#include <QtGui> #include<QtWidgets> int main(int argc, char** argv) { QApplication app(argc, argv); QWidget* window=new QWidget; QVBoxLayout*box=new QVBoxLayout; QPushButton*button=new QPushButton ; box->addWidget(button); window->setLayout(box); window->show(); return app.exec(); }
درود.
میشه یه نمونه از این کلاس های کگرافیکی رو بزارید؟؟؟
محمد.
motherboard
پنج شنبه 19 تیر 1393, 16:10 عصر
همون طور که می دونید ما می تونیم در کیوت با استفاده ازشی ای از QBoxLayout مجموعه ای از ویجت ها رو فراهم کنیم و در اخر با یک setLayout تمام ویجت های استاندارد و پایه مثل دکمه و منو و تکست باکس و .... این ها رو در مثلا mainWindow و یا مثلا با QWidget نمایش بدیم.اما یک سری کلاس های گرافیکی هستند که تعدادشون هم کم نیست و QGraphicsEffect (qthelp://org.qt-project.qtwidgets.530/qtwidgets/qgraphicseffect.html) و یا QGraphicsAnchor (qthelp://org.qt-project.qtwidgets.530/qtwidgets/qgraphicsanchor.html) و یا QGraphicsObject (qthelp://org.qt-project.qtwidgets.530/qtwidgets/qgraphicsobject.html) و ..... که خیلی زیاد هستند و خودتون با مراجعه به مستندات کیوت می تونید ببینید.الان من نمیدونم مثلا وفتی قراره یک جلوه گرافیکی بسازم چه طور یک کاری کنم که مثلا داخل تابعی از شی QMainWindow فرستاده بشه و من بتونم با یک show نتیجه رو ببینم.در واقع نمیدونم در پنجره ای مثل QMainWindow اون کدوم تابع هست که بتونم جلوه های گرافیکیم رو در نهایت (حالا به هر صورتی) وارد ارگومان تابعی مخصوص از توابع QMainWindow کنم و درنهایت با یک show نمایش دهم.و به صورت کلی اون کدوم از توابع QMainWindow هست که مثلا یک شی گرافیکی رو می پذیره و در نهایت با یک show میشه اون رو نمایش داد.مثلا می دونم با QBoxLayuot میشه ویجت رو تابع مخصوص QMainWindow نمایش داد.اما نمیدونم اعمال گرافیکی رو کدوم تابع و یا توابع QMainWindow نمایش می دهند؟
motherboard
پنج شنبه 19 تیر 1393, 19:01 عصر
چرا کسی به ما کمک نمی کنه؟؟!!!!!!!
من که سوالم رو واضح می پرسم.
کد ساده زیر رو در نظر بگیرید.من می خوام که رنگ پنجره به صورت قرمز دربیاد.دو جای کد اشتباهه.چون نمیدونم چی کار کنم که رنگ پنجره اصلی رو به قرمز تغییر بدم.:گریه::گریه::گریه::گریه::گ ریه::گریه::گریه::گریه::گریه::گ ریه::گریه::گریه::گریه::گریه::گ ریه::گریه::گریه:
#include <QtGui> #include<QtWidgets> int main(int argc, char* argv[]) { QApplication app(argc, argv); QMainWindow* window=new QMainWindow; QLayout*layout=new QLayout; QColor*pixmap=new QColor; pixmap->setRed(255); layout->addWidget(pixmap); window->setLayout(layout); return app.exec(); }
این هم محتویات pro:
QT += gui core widgets SOURCES += \ main.cpp
کامبیز اسدزاده
پنج شنبه 19 تیر 1393, 20:06 عصر
چرا کسی به ما کمک نمی کنه؟؟!!!!!!!
من که سوالم رو واضح می پرسم.
کد ساده زیر رو در نظر بگیرید.من می خوام که رنگ پنجره به صورت قرمز دربیاد.دو جای کد اشتباهه.چون نمیدونم چی کار کنم که رنگ پنجره اصلی رو به قرمز تغییر بدم.:گریه::گریه::گریه::گریه::گ ریه::گریه::گریه::گریه::گریه::گ ریه::گریه::گریه::گریه::گریه::گ ریه::گریه::گریه:
#include <QtGui> #include<QtWidgets> int main(int argc, char* argv[]) { QApplication app(argc, argv); QMainWindow* window=new QMainWindow; QLayout*layout=new QLayout; QColor*pixmap=new QColor; pixmap->setRed(255); layout->addWidget(pixmap); window->setLayout(layout); return app.exec(); }
این هم محتویات pro:
QT += gui core widgets SOURCES += \ main.cpp
چرا اینهمه دنبال دردسر هستید ؟ راه ساده ای وجود داره...
setStyleSheet("background-color: rgb(255, 0, 0);");
درضمن کد هاتون رو در تگ C++ قرار بدین من یکی حوصله مرتب کردن دوباره کدهاتون رو ندارم... و اگر نا سریعتر جواب میدادم.
omid_kma
جمعه 20 تیر 1393, 14:11 عصر
کدت رو قبل از گذاشتن توی سایت داخل notepad کپی کن بعد از اون جا کپی کن بزار
این جا اگر مستقیم از Qt creator کپی کنی بزاری میریزه به هم :))
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.