কিউবেল: পাঠ্য এবং পটভূমির রঙ সেট করুন


180

আমি কীভাবে পাঠ্যের রঙ এবং একটি এর পটভূমি সেট করব QLabel?

উত্তর:


272

সবচেয়ে ভাল এবং প্রস্তাবিত উপায় হল কিউটি স্টাইল শীট ব্যবহার করা

এর পাঠ্যের রঙ এবং পটভূমির রঙ পরিবর্তন করতে 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়ভাবে প্যালেটটি ব্যবহার না করার এবং কিউটি স্টাইল শীটের দিকে না যাওয়ার পরামর্শ দিই।


আমি সেট স্টাইলশিট () পদ্ধতিটি ব্যবহার করে যাচ্ছি এবং কমপক্ষে Qt 4.4 এ এটি সংযোগ কল এবং স্টাইল শীট স্টাফগুলিতে শেষ হয় এবং মেমরির ব্যবহার বৃদ্ধি করে।
ডেভ

বর্ধিত মেমরির ব্যবহার সম্পর্কে আমি একটি বাগ রিপোর্ট খুললাম যা এখানে পাওয়া যাবে
ডেভ

colorঅ্যাট্রিবিউট অকার্যকর হয়। শুধু মাধ্যমে এইচটিএমএল <font color="#FFFFFF">...</font>। আমি এই ক্ষেত্রে সাদা ফন্ট রঙ (সেট করতে সক্ষম ছিল
পাওলো কারভালহো

ব্যবহারকারীর ডেস্কটপের ডিফল্ট (পাঠ্য) রঙ নির্দিষ্ট করার কোনও উপায় আছে কি? color: ;একটি 'রিসেট' হিসাবে ব্যবহার করা এটি মনে হচ্ছে, তবে এটি কি ভাল অনুশীলন, বা এর থেকে আরও ভাল কোনও পদ্ধতি আছে?
অ্যাস্ট্রোফ্লয়েড

38

আপনি কিপলেট ব্যবহার করতে পারেন, তবে আপনার 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");

এটি উইন্ডোজ এবং উবুন্টুতে দুর্দান্ত কাজ করে, আমি অন্য কোনও ওএসের সাথে খেলিনি।

দ্রষ্টব্য: আরও তথ্যের জন্য দয়া করে কিপলেট , রঙের ভূমিকা বিভাগটি দেখুন


এটি যে কোনও পদ্ধতির (স্টাইলশিট ব্যতীত) সবচেয়ে গুরুত্বপূর্ণ একক উপাদান
এলিয়াহু স্কোকজিলাস

3
এখানে অটোফিলব্যাকগ্রাউন্ড একটি মূল সমস্যা বলে চিহ্নিত করার জন্য আপনাকে ধন্যবাদ। উপরে গৃহীত উত্তরটি সেটিং ব্যতীত কাজ করে না।
বিএসডি

20

আমি এই উত্তরটি যুক্ত করেছি কারণ আমি মনে করি এটি কারও পক্ষে কার্যকর হতে পারে।

আমি আমার পেইন্টিং অ্যাপ্লিকেশনে রঙিন ডিসপ্লে লেবেলগুলির জন্য আরজিবিএ রঙগুলি সেট করার সমস্যাটি (যা স্বচ্ছতার জন্য একটি আলফা মান সহ আরজিবি রঙ) এ পদক্ষেপ নিয়েছি।

আমি যখন প্রথম উত্তরটি দেখতে পেলাম, আমি আরজিবিএ রঙ সেট করতে পারিনি। আমি এর মতো জিনিসও চেষ্টা করেছি:

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কাজ করে না।

শুভেচ্ছা সহ,


14

আমার পক্ষে কাজ করা কেবলমাত্র এইচটিএমএল।

এবং আমি খুঁজে পেয়েছি এটি যে কোনও প্রোগ্রামেটিক পদ্ধতির চেয়ে বেশি সহজ কাজ।

নীচের কোডটি একজন কলার কর্তৃক প্রদত্ত প্যারামিটারের ভিত্তিতে পাঠ্যের রঙ পরিবর্তন করে।

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/>ট্যাগের অভ্যন্তরে কিছু অন্যান্য অভিনব স্টাফ রাখার অনুমতি দেয় (এবং এটি এইচটিএমএল লোকেদের সাথে আরও কিছু পরিচিত: ডি) এবং কেবল একটি রঙ নয় তাই এটি আপনাকে আরও নমনীয়তা দেয়।
rbaleksandar

@ জ্ঞাতনামা স্টাইলশিটগুলি কিউপ্যালেটের মাধ্যমে কাজ করে ... সমস্ত কিউ প্যালেট ব্যবহার করে।
ভিক্টর পোলেভয়

13

যে কোনও উইজেটের রঙ সম্পর্কিত যে কোনও বৈশিষ্ট্য সেট করার সর্বোত্তম উপায় হ'ল কিউপ্লেট ব্যবহার করা

এবং আপনি যা সন্ধান করছেন তার সর্বাধিক সহজ উপায় হ'ল কিউটি ডিজাইনার খুলুন এবং একটি কিউবেলের প্যালেট সেট করুন এবং উত্পন্ন কোডটি পরীক্ষা করুন।


2
ডিজাইনারে, উত্পন্ন কোডটি দেখতে "ফর্ম-> কোড দেখুন" ক্লিক করুন।
আলিসামি

6

এই এক নিখুঁত কাজ করছে

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


1
যদিও কোডটি প্রশংসা করা হয়েছে, এর সর্বদা একটি সহিত ব্যাখ্যা থাকা উচিত। এটি দীর্ঘ হতে হবে না, তবে এটি প্রত্যাশিত।
পিটারহ - মনিকা

এই কোডটি কাজ করার সময়, কয়েকটি সুনির্দিষ্ট অপ্টিমাইজেশন রয়েছে <কোড> কিউলোর রঙ = কিউলোর ডায়ালগ :: গিটার কলার (কিউয়াল কালার (কিউটি :: হোয়াইট), এটি, টিআর ("রঙ নির্বাচন করুন"); // রঙ নির্বাচন করতে স্ট্যাটিক ফাংশন ব্যবহার করুন, প্রাথমিক মানটি সাদা </ b> <i> লেবেল-> সেট স্টাইলশিট (কিউ স্ট্রিং ("কিউবেল {ব্যাকগ্রাউন্ড-রঙ:% 1; রঙ: নীল;}" "+ কোলকোড +"; রঙ: নীল;} ") .আরজি ( color.name ()); // color.name একটি #RRGGBB ফর্ম্যাট স্ট্রিং </ কোড>
স্কট অ্যারন ব্লুম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.