PDA

View Full Version : علت دو ارور این کد چیست؟



motherboard
جمعه 20 تیر 1393, 16:08 عصر
سلام.من کدی نوشتم که می خوام یک خطی رو از (100,100) تا (200,200) رسم کنم.اما با دو خطا مواجه میشم.راه حل چیست؟

#include <QApplication>
#include <QtWidgets>

int main( int argc, char **argv )
{
QApplication app(argc, argv);
QGraphicsView*view=new QGraphicsView;
QGraphicsEffect*graphicseffect=new QGraphicsColorizeEffect;
QPainter*painter=new QPainter;
view->resize(500,500);
painter->drawLine(100,100,200,200);
graphicseffect->draw(painter);
view->setCornerWidget(graphicseffect);
view->show();
return app.exec();
}



فایل پرو هم

QT += gui core widgets
SOURCES += \
main.cpp

motherboard
جمعه 20 تیر 1393, 16:15 عصر
موفق شدم خطا رو به یک خطا کاهش بدم!!!!! این یک خطا رو چه طور اصلاح کنم؟؟؟

#include <QApplication>
#include <QtWidgets>

int main( int argc, char *argv[] )
{
QApplication app(argc, argv);
QGraphicsView*view=new QGraphicsView;
QGraphicsEffect*graphicseffect=new QGraphicsColorizeEffect;
QPainter*painter=new QPainter;
view->resize(500,500);
painter->drawLine(100,100,200,200);
graphicseffect->draw(painter);
view->setGraphicsEffect(graphicseffect);
view->show();
return app.exec();
}

حامد مصافی
جمعه 20 تیر 1393, 17:47 عصر
کدوم خطا؟؟؟
خب پسر خوب متن خطا رو بنویس دیگه. انتظار داری بریم این کد رو در یک پروژه بنویسیم بعد اجراش کنیم که تازه ببینیم این خطایی که منظورته چیه؟؟
ضمنا off-topic هم نفرست ;)

motherboard
جمعه 20 تیر 1393, 18:14 عصر
کدوم خطا؟؟؟
خب پسر خوب متن خطا رو بنویس دیگه. انتظار داری بریم این کد رو در یک پروژه بنویسیم بعد اجراش کنیم که تازه ببینیم این خطایی که منظورته چیه؟؟
ضمنا off-topic هم نفرست ;)
شرمنده اقا حامد.واقعا قصدم اسپم دادن نیست.برای اینکه دوستان متوجه سوال بنده بشوند مجبور میشم off بدم.!! خب این هم از مزیت های اسپم هست دیگه!! :لبخند: ولی جدا از شوخی اگه بخوام پست رو ویرایش کنم دوستان متوجه نمی شوند و به خاطر همین یک پست جدید به عنوان درخواست دوباره میدم و واقعا قصدم اسپم دادن نیست.واقعا تو کد زیر گیر کردم.اینکه چه طور یک خط رو رسم کنم رو نمی دونم.به خاطر همین الان عکس رو قرار دادم تا هم شما و هم دوستان دیگر ببینند.
121037

حامد مصافی
جمعه 20 تیر 1393, 19:50 عصر
کدت اشتباهه.
من نمیفهمم، چه نیازی به QGraphicsEffect داری؟؟؟

اینو اینجا نوشتم اما تست نکردم



#include <QApplication>
#include <QtWidgets>

int main( int argc, char *argv[] )
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view = new QGraphicsView(&scene);
QGraphicsLineItem *line = scene.addLine(100, 100, 200, 200);
QGraphicsEffect *graphicseffect=new QGraphicsColorizeEffect;
line->setGraphicsEffect(graphicseffect);
view->resize(500,500);
view->show();
return app.exec();
}

motherboard
جمعه 20 تیر 1393, 20:47 عصر
اون خط اول کدی که نوشتید برام مبهم هست.اما من اومدم از ابتدای include تا پایان اکولاد رو وارد کیوت کردم و موقع کامپایل چند خطا داد.البته خط اول کد به نظر به هم ریخته است.به هر حال من عکسی رو از کدی که از کد شما وارد کردم و اون خطاها رو داد رو براتون می ذارم.البته باز میگم اون خط اول کد تون برام مبهم و به هم ریخته هست.
121046

motherboard
جمعه 03 مرداد 1393, 17:37 عصر
من کد بالا رو کلا تغییر دادم و به صورت زیر در اوردم.این کد قراره یک خطی رو رسم کنه.ضمن اینکه این شی ها به توابع عضو خودشون اشاره می کنند و نباید مشکل no matching پیش بیاد.من این کد رو با رعایت مستندات خود کیوت نوشتم.انصافا یک بار این کد رو خودتون اجرا کنید و ببینید چه مرگشه اخه!!! نمی دونم چرا کد اجرا نمیشه .با توجه به اینکه هر شی ای به تابع عضو خودش اشاره می کنه باز ارور میده.خودتون هم یکبار مراحل رو چک کنید.وجدانا وقتی اومدم یکبار دیگه فروم رو ببینم خبری از تعداد پاسخ =0 نباشه!!!! من کد پرو و خود سورس رو براتون می ذارم.وجدانا بچه ها یه کمکی بکنید.

#include <QApplication>
#include <QtWidgets>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QLabel* l=new QLabel;
l->resize(500,500);
QGraphicsEffect*effect=new QGraphicsEffect();
QPainter *painter=new QPainter();
painter->drawLine(100,100,200,200);
effect->draw(painter);
l->setGraphicsEffect(effect);
l->show();
return app.exec();
}


سورس پرو

QT += gui core widgets
SOURCES += \
main.cpp

motherboard
سه شنبه 07 مرداد 1393, 12:15 عصر
کسی پیگیر ماجرا نشد!!! ولی در نهایت تونستم جواب سوالم رو پیدا کنم.من به دوستان سایت QtCenter رو پیشنهاد می کنم.فروم خوبی هست.مخصوص کیوت هستش.و استایلش هم شبیه همین سایت برنامه نویس هست .لینکی که در زیر می بینید همین سوالی است که اینجا پرسیدم و دوباره اون رو در اون سایت خارجی پرسیدم.به هر حال ممنون.
اینجا رو کلیک (http://www.qtcentre.org/threads/59837-Difficulty-in-drawing-a-line) کنید.

omid_kma
سه شنبه 07 مرداد 1393, 17:42 عصر
سلام برای اسنفاده از painEvent باید از کلاس مورد نظر ارث ببری متد paintEvent رو overload کنی و بعد داخل اون تابع از painter استفاده کنی داخل خود Qt و اینترنت مثال هایی در این مورد هست .

kitten
سه شنبه 07 مرداد 1393, 22:48 عصر
قبلا یه چیزی تو همین مایه ها نوشته بودم که سورس و باینریش را اینجا گذاشتم میتونی یه نگاه بهش بندازی
http://kitten.mihanblog.com/post/70