[Qt] QApplicationH and QApplication_setStyleSheet

Marcin Dębicki alterfenix at gmail.com
Sat Nov 7 22:18:46 CET 2009


Ok, now I have another problem regarding styles (less Qt bindings itself). I
have listbox with Style set to lbOwnerDrawFixed and following procedure to
draw item:

var
  Bitmap: TBitmap;      { temporary variable for the item’s
bitmap }
  Offset: Integer;      { text offset width }
  s: string;
  Pc: string;
begin
try
  with lbPlaylist.Canvas do  { draw on control canvas, not on the form }
  begin
//  FillRect(TxtRect);       { clear the rectangle }
  Offset := 2;
  lbPlaylist.Canvas.AutoRedraw:=true;        { provide default offset }
  Bitmap := TBitmap(lbPlaylist.Items.Objects[Index]); { get the bitmap }
  if Bitmap <> nil then

  begin
    Draw(ARect.Left + Offset, ARect.Top, Bitmap); {render bitmap}
    Offset := Bitmap.width + 6;    { add four pixels between bitmap and
text}
  end;
  if (not Self.FStopped) and (Index=CurrentIndex)and
    (Playlist.GetItem(CurrentIndex)^.FileName=CurrentFile) then
    Font.Style:=Font.Style+[fsBold] else
    Font.Style:=Font.Style-[fsBold];

  StrPCopy(Pc, Self.Playlist.GetItem(Index)^.FileName);
  if not IsStream(Pc) then
  s:=ProduceFormatedString(KSPMainWindow.FormatedPlayListInfo,
            Self.Playlist.GetItem(Index)^.Tag,
            GetDuration(Self.Playlist.GetItem(Index)^.Stream),
            Index+1) else begin
      if (KSPMainWindow.CurrentIndex=Index) and
(Player.StreamInfo.Title<>'') then
      s:=Format(SShoutcastEntry, [Player.StreamInfo.Title]) else
      s:=Format(SShoutcastEntry, [Self.Playlist.GetItem(Index)^.FileName]);
    end;
  TextOut(ARect.Left + Offset, ARect.Top, s);//lbPlaylist.Items[Index])  {
display the text }
  end;
finally

end;

The style used by me is:

 QTextEdit, QListView {
     background-color: rgb(195, 195, 195);
 color: rgb(195, 195, 195);
     background-attachment: fixed;
 }

 QListView {
     show-decoration-selected: 1; /* make the selection span the entire
width of the view */
 }

 QListView::item {
     background: #EEEEEE;
 }

 QListView::item:selected {
     border: 1px solid #6a6ea9;
 }

 QListView::item:selected:!active {
     background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                 stop: 0 #ABAFE5, stop: 1 #8588B2);
 }

 QListView::item:selected:active {
     background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                 stop: 0 #6a6ea9, stop: 1 #888dd9);
 }

 QListView::item:hover {
     background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                 stop: 0 #FAFBFE, stop: 1 #DCDEF1);
 }

Problem is that background itself is painted properly everywhere except
where text goes. The same is about font.

2009/11/7 zeljko <zeljko at holobit.net>

> On Friday 06 November 2009 20:07, Marcin Dębicki wrote:
> > Probably stupid questions but I can't really find an answer.
> >
> > 1. How can I retrieve handle for my application so I can use
> > QApplication_setStyleSheet? Application is created visually with Lazarus.
>
> QAppllication_setStyleSheet(QCoreApplication_instance(), @WStr) where WStr
> is
> widestring which contains stylesheet code.
>
> > 2. Second parameter for QApplication_setStyleSheet is stylesheet code,
> > right? For example:
> >
> >  QMainWindow::separator {
> >      background: yellow;
> >      width: 10px; /* when vertical */
> >      height: 10px; /* when horizontal */
> >  }
> >
> >  QMainWindow::separator:hover {
> >      background: red;
> >  }
> >
> > Best regards,
> > Marcin Dębicki
>
> _______________________________________________
> Qt mailing list
> Qt at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/qt
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/qt/attachments/20091107/579332b4/attachment-0002.html>


More information about the Qt mailing list