Qt 4.8 스타일시트 적용에 관한 질문

Hamyt88의 이미지

안녕하세요. Qt로 스타일을 적용하다가 잘 안되는 부분이 있어 질문 드립니다.

지금 스타일시트를 적용한 방식은 각 위젯별로 따로따로 적용한것은 아니고
아래 코드처럼 main함수에서 스타일시트 파일을 불러와 QApplication 객체에 적용하고 있습니다.

그리고 사각형의 각진 버튼 모양과 윈도우와 동일한 UI동작방식을 쓰기 위해 "windows" 스타일을 적용한 상태입니다.

#include <QApplication>
#include <QtCore/QFile>
#include <QtCore/QString>
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    QFile f(":/CssApp/style.css");
    f.open( QFile::ReadOnly );
    a.setStyleSheet( QString::fromUtf8(f.readAll()) );
    f.close();
 
    QApplication::setStyle( "windows" );
    MainWindow w;
    w.show();
 
    return a.exec();
}

질문 1 - QPushButton

CSS를 적용하지 않은 상태에서는 다음 그림처럼 깨끗한 색상으로 잘 나옵니다.

전체적으로 어두운 색으로 배경을 지정한 다음,
QPushButton이 check 된 상태일 때 강조를 하기 위해 배경을 노란색으로 지정했습니다.

QWidget
{
	background-color: rgb(36,36,36);
	color: white;
}
 
QPushButton
{
	background-color: rgb(50,50,50);
}
 
QPushButton:checked
{
	background-color: yellow;
	color: black;
}

적용하고 실행하면 이 그림처럼 나오는데...

check 된 버튼에 뭔가가 씌워진것처럼 회색 음영(?)이 씌워져서 나옵니다.

이 회색 음영을 없애버리고 깨끗한 노란색으로 볼 수 없을까요?

ps. 스타일을 "windows"가 아닌 "cleanlooks"로 지정하면 노란색으로 잘 나옵니다. 근데 그러면 모든 위젯의 모양이 다 원하는 모양과는 다른지라...

질문 2 - QTreeWidget

위의 스타일이 그대로 적용된 상태에서.. QTreeWidget에 항목을 추가하였습니다.
    for( int i = 0; i < 10; ++i )
    {
        QTreeWidgetItem *ti = new QTreeWidgetItem( ui->treeWidget );
 
        ti->setText( 0, "Hello" );
        ti->setTextColor( 0, Qt::yellow );
        ti->setBackgroundColor( 0, Qt::green );
 
        ti->setText( 1, "World" );
        // ti->setTextColor( 1, Qt::yellow );       // use default setting
        // ti->setBackgroundColor( 1, Qt::green );  // use default setting
 
        ti->setText( 2, QString::number(i) );
        ti->setTextColor( 2, Qt::black );
        ti->setBackgroundColor( 2, Qt::white );
 
        ti->setText( 3, "Aaa..." );
        ti->setTextColor( 3, Qt::gray );
        ti->setBackground( 3, Qt::yellow );
    }
각 항목에 텍스트와 배경의 색상을 코드에서 지정을 하였고, 다음과 같이 나왔습니다.

여기에 각 항목에 테두리를 치고 싶어 스타일시트에 아래 내용을 추가했습니다.

QTreeWidget::item
{
	border: 1px solid gray;
}

그런데 border 스타일만 지정을 했음에도 적용하면 이렇게 나오네요.

테두리는 딱 마음에 들게 적용되었는데
소스코드에서 지정한 배경색상이 하나도 적용되지 않습니다.
QTreeWidget의 setBackgroundColor와 setBackground 두가지를 다 써봤는데 둘 다 똑같네요.
게다가 선택한 항목이 하이라이팅 되지도 않구요...
그런데 텍스트 색상은 또 적용이 되는군요.

항목에 테두리만 적용하고 색상을 소스코드에서 제어할 수 있는 방법이 있을까요?

File attachments: 
첨부파일 크기
Image icon buttons.png4.15 KB
Image icon tree1.png9.3 KB
Image icon tree2.png8.13 KB
Image icon buttons2.png3.81 KB

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.