Qt 4.8 스타일시트 적용에 관한 질문
안녕하세요. 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 두가지를 다 써봤는데 둘 다 똑같네요.
게다가 선택한 항목이 하이라이팅 되지도 않구요...
그런데 텍스트 색상은 또 적용이 되는군요.
항목에 테두리만 적용하고 색상을 소스코드에서 제어할 수 있는 방법이 있을까요?
| 첨부 | 파일 크기 |
|---|---|
| 4.15 KB | |
| 9.3 KB | |
| 8.13 KB | |
| 3.81 KB |


댓글 달기