উত্তর:
সবচেয়ে ভাল এবং প্রস্তাবিত উপায় হল কিউটি স্টাইল শীট ব্যবহার করা ।
এর পাঠ্যের রঙ এবং পটভূমির রঙ পরিবর্তন করতে QLabel
, আমি এখানে যা করব তা এখানে:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
আপনি কিউটি স্টাইল শীট ব্যবহার এড়াতে এবং QPalette
আপনার রঙ পরিবর্তন করতে পারেনQLabel
করতে পারেন, তবে আপনি বিভিন্ন প্ল্যাটফর্ম এবং / অথবা শৈলীতে বিভিন্ন ফলাফল পেতে পারেন।
কিউটি ডকুমেন্টেশন যেমন বলে:
একটি QPalette ব্যবহার করা সমস্ত স্টাইলের জন্য কাজ করার গ্যারান্টিযুক্ত নয়, কারণ স্টাইল লেখকরা বিভিন্ন প্ল্যাটফর্মের নির্দেশিকা এবং নেটিভ থিম ইঞ্জিন দ্বারা সীমাবদ্ধ are
তবে আপনি এরকম কিছু করতে পারেন:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
তবে আমি যেমন বলেছি, আমি দৃ strongly়ভাবে প্যালেটটি ব্যবহার না করার এবং কিউটি স্টাইল শীটের দিকে না যাওয়ার পরামর্শ দিই।
color
অ্যাট্রিবিউট অকার্যকর হয়। শুধু মাধ্যমে এইচটিএমএল <font color="#FFFFFF">...</font>
। আমি এই ক্ষেত্রে সাদা ফন্ট রঙ (সেট করতে সক্ষম ছিল
color: ;
একটি 'রিসেট' হিসাবে ব্যবহার করা এটি মনে হচ্ছে, তবে এটি কি ভাল অনুশীলন, বা এর থেকে আরও ভাল কোনও পদ্ধতি আছে?
আপনি কিপলেট ব্যবহার করতে পারেন, তবে আপনার setAutoFillBackground(true);
পটভূমির রঙ সক্ষম করতে হবে
QPalette sample_palette;
sample_palette.setColor(QPalette::Window, Qt::white);
sample_palette.setColor(QPalette::WindowText, Qt::blue);
sample_label->setAutoFillBackground(true);
sample_label->setPalette(sample_palette);
sample_label->setText("What ever text");
এটি উইন্ডোজ এবং উবুন্টুতে দুর্দান্ত কাজ করে, আমি অন্য কোনও ওএসের সাথে খেলিনি।
দ্রষ্টব্য: আরও তথ্যের জন্য দয়া করে কিপলেট , রঙের ভূমিকা বিভাগটি দেখুন
আমি এই উত্তরটি যুক্ত করেছি কারণ আমি মনে করি এটি কারও পক্ষে কার্যকর হতে পারে।
আমি আমার পেইন্টিং অ্যাপ্লিকেশনে রঙিন ডিসপ্লে লেবেলগুলির জন্য আরজিবিএ রঙগুলি সেট করার সমস্যাটি (যা স্বচ্ছতার জন্য একটি আলফা মান সহ আরজিবি রঙ) এ পদক্ষেপ নিয়েছি।
আমি যখন প্রথম উত্তরটি দেখতে পেলাম, আমি আরজিবিএ রঙ সেট করতে পারিনি। আমি এর মতো জিনিসও চেষ্টা করেছি:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
color
আরজিবিএ রঙ কোথায় ।
সুতরাং, আমার নোংরা সমাধানটি প্রসারিত QLabel
এবং ওভাররাইড করা ছিলpaintEvent()
এর সীমানা রেক্টটি পূরণ করার পদ্ধতিটি ।
আজ, আমি এটি খুললাম qt-assistant
এবং পড়েছি শৈলীর রেফারেন্স বৈশিষ্ট্য তালিকাটি খুললাম । সৌভাগ্যক্রমে, এর একটি উদাহরণ রয়েছে যা নীচে বর্ণিত:
QLineEdit { background-color: rgb(255, 0, 0) }
নীচের কোডটির মতো কিছু উদাহরণ হিসাবে উদাহরণস্বরূপ:
myLabel= QLabel()
myLabel.setAutoFillBackground(True) # This is important!!
color = QtGui.QColor(233, 10, 150)
alpha = 140
values = "{r}, {g}, {b}, {a}".format(r = color.red(),
g = color.green(),
b = color.blue(),
a = alpha
)
myLabel.setStyleSheet("QLabel { background-color: rgba("+values+"); }")
মনে রাখবেন যে setAutoFillBackground()
সেটটি False
কাজ করে না।
শুভেচ্ছা সহ,
আমার পক্ষে কাজ করা কেবলমাত্র এইচটিএমএল।
এবং আমি খুঁজে পেয়েছি এটি যে কোনও প্রোগ্রামেটিক পদ্ধতির চেয়ে বেশি সহজ কাজ।
নীচের কোডটি একজন কলার কর্তৃক প্রদত্ত প্যারামিটারের ভিত্তিতে পাঠ্যের রঙ পরিবর্তন করে।
enum {msg_info, msg_notify, msg_alert};
:
:
void bits::sendMessage(QString& line, int level)
{
QTextCursor cursor = ui->messages->textCursor();
QString alertHtml = "<font color=\"DeepPink\">";
QString notifyHtml = "<font color=\"Lime\">";
QString infoHtml = "<font color=\"Aqua\">";
QString endHtml = "</font><br>";
switch(level)
{
case msg_alert: line = alertHtml % line; break;
case msg_notify: line = notifyHtml % line; break;
case msg_info: line = infoHtml % line; break;
default: line = infoHtml % line; break;
}
line = line % endHtml;
ui->messages->insertHtml(line);
cursor.movePosition(QTextCursor::End);
ui->messages->setTextCursor(cursor);
}
<font/>
ট্যাগের অভ্যন্তরে কিছু অন্যান্য অভিনব স্টাফ রাখার অনুমতি দেয় (এবং এটি এইচটিএমএল লোকেদের সাথে আরও কিছু পরিচিত: ডি) এবং কেবল একটি রঙ নয় তাই এটি আপনাকে আরও নমনীয়তা দেয়।
যে কোনও উইজেটের রঙ সম্পর্কিত যে কোনও বৈশিষ্ট্য সেট করার সর্বোত্তম উপায় হ'ল কিউপ্লেট ব্যবহার করা ।
এবং আপনি যা সন্ধান করছেন তার সর্বাধিক সহজ উপায় হ'ল কিউটি ডিজাইনার খুলুন এবং একটি কিউবেলের প্যালেট সেট করুন এবং উত্পন্ন কোডটি পরীক্ষা করুন।
QColorDialog *dialog = new QColorDialog(this);
QColor color= dialog->getColor();
QVariant variant= color;
QString colcode = variant.toString();
ui->label->setStyleSheet("QLabel { background-color :"+colcode+" ; color : blue; }");
getColor()
পদ্ধতিটি নির্বাচিত রঙটি দেয়। আপনি ব্যবহার করে লেবেলের রঙ পরিবর্তন করতে পারেনstylesheet