ورود

View Full Version : تصویر بع عنوان یک کلید



smemamian
جمعه 14 تیر 1392, 21:53 عصر
سلام

چگونه میشه رفتار یک عکس رو به یک button تبدیل کرد ؟

مثلا بشه روش کلیک کرد ؟

rubiks.kde
جمعه 14 تیر 1392, 23:04 عصر
یه button بزار ، با استفاده از StyleSheet هم برای پس زمینه عکس بزار و هر کاری که میخوایی انجام بده.

smemamian
شنبه 15 تیر 1392, 00:17 صبح
آخه اون عکس در باتم بد قرار میگیره !
هر کاری کردم و اینترنت رو زیر رو کردم باز عکس کامل کلید رو نمی پوشونه !

شما چطوری قرار میدی ؟

omidshaman
شنبه 15 تیر 1392, 17:07 عصر
خوب نگشتی دیگه :)
احتمالا باید با همون style ها بشه
یک راه دیگشم اینه که از کلاس QPushButton ارث ببری و paintevent رو دوباره بنویسی
یک مثال سادشو برات میزارم نگاه کن
106716

smemamian
شنبه 15 تیر 1392, 18:13 عصر
با style ها نمیشه ؟ آخه 60تا کلید در صفحه هم دارم بخوام واسه هرکدوم.. خیلی وقت می بره !

smemamian
شنبه 15 تیر 1392, 20:11 عصر
به این صورت حل شد :

ui->pushButton1->setStyleSheet("background-image: url(:/PIC/Button-1.png);"
"background-repeat: no-repeat;"
"background-position: center center");

از همه دوستان که جواب دادن تشکر می کنم .

ali chegini
چهارشنبه 02 مرداد 1392, 04:43 صبح
سلام.
برای اینکه به تونی یه رخدادی رو با کلیک رو عکس راه بندازی 2 تا راه داری :
1- برو تو گوگل و qt promote widget رو سرچ کن.فیلم آموزشش تو یوتیوب هست.:گریه:
2- یه label بزار. عکسش رو تنظیم کن.بعد:
کلاس جدید بساز به نام my_label
سپس تو my_label.h کد زیر رو وارد کن.

#ifndef MY_LABEL_H
#define MY_LABEL_H

#include <QLabel>
#include <QMouseEvent>

class my_label : public QLabel
{
Q_OBJECT
public:
explicit my_label(QWidget *parent = 0);

signals:
void mousePressEvent(QMouseEvent *ev);
void mouseMoveEvent(QMouseEvent *ev);
};

#endif // MY_LABEL_H



بعد برو تو my_label.cpp و کد زیر رو وارد کن:



#include "my_label.h"

my_label::my_label(QWidget *parent) :
QLabel(parent)
{
setMouseTracking(true);
}

حالا برو روی لیبلی که گذاشته بود و روش کلیک راست کن.
گزینه promote to رو بزن.
تو صفحه ای که باز شد موارد زیر رو تنظیم کن.
base class name = QLabel
promoted class name = my_label
header file = my_label.h
global include رو تیک بزن.
بعد promote رو کلیک کن.
حالا می تونی این طوری استفاده کنی :

connect(ui->back,SIGNAL(mousePressEvent(QMouseEvent*)),this,SL OT(back()));