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 |
댓글 달기