Seite 1 von 1

QT 4.2] Stylesheets probleme

Verfasst: 9. November 2006 22:32
von defenderLQ
hi

doch nun test am orginal example habe ich micht entschlossen mal in mein
source zu integrieren aber nun kommt kurz vor schluss fehler wegen der main.cpp auf:

Code: Alles auswählen

./temp\obj\main.o(.text+0x56):main.cpp: undefined reference to `qInitResources_s
tylesheet()'

Code: Alles auswählen

#include <QtGui>
#include <QObject>
#include <rshare.h>
#include <gui/MainWindow.h>
#include <util/process.h>
#include <util/string.h>
#include "rsiface/rsiface.h"


RsIface *rsiface = NULL;

int main(int argc, char *argv[])
{ 
  Q_INIT_RESOURCE(stylesheet);

  QStringList args = char_array_to_stringlist(argv+1, argc-1);

  NotifyBase callback; /* for callback functions - we'll worry about these later */
  rsiface = new RsIface(callback); /* create the retr interface, 
  				      and save it to the global pointer
				    */

  Rshare rshare(args, argc, argv);
  
  

  MainWindow w;
  w.show();

  return rshare.exec();
}

Verfasst: 10. November 2006 01:03
von defenderLQ
habe es in main.cpp nicht nicht geaddet sondern wieder entfernt.

der stylesheet werden nicht gepeichert aber es geht.
Bild

nun was ich rausbekommen muss ob man das ganze von aushalb der
binary die .png dateien und css dateine auslesen kann ist die frage?
und wie?

ja wenn man viele stylesheets machen will ist besser wenn die skins extern sind..


für jedes neue stylesheet braucht mein

1. ein seperates .ui für jedes stylesheet
2. jedes stylesheet braucht ein .qss datei
3. jedes stylesheet braucht seine eigene icons

ja wie mache ich das nur?

Es sollte so sein etwa:

app_ordner/Skins/ danach kommen die ordner wo die dateien drin sind
z.b. in einem pagefold sind dann die ganzen .png + die .css datei + die .ui

ist das überhaupt so möglich?
und wie?



Code: Alles auswählen

#include "rshare.h"
#include "PreferencesDialog.h"


/** Constructor */
PreferencesDialog::PreferencesDialog(QWidget *parent)
: ConfigPage(parent)
{
  /* Invoke the Qt Designer generated object setup routine */
  ui.setupUi(this);

 /* Create RshareSettings object */
  _settings = new RshareSettings();

  /* Populate combo boxes */
  foreach (QString code, LanguageSupport::languageCodes()) {
    ui.cmboLanguage->addItem(QIcon(":/images/flags/" + code + ".png"),
                             LanguageSupport::languageName(code),
                             code);
  }
  foreach (QString style, QStyleFactory::keys()) {
    ui.cmboStyle->addItem(style, style.toLower());
  }
  
  ui.styleSheetCombo->setCurrentIndex(ui.styleSheetCombo->findText("Default"));
    loadStyleSheet("Default");
}

/** Destructor */
PreferencesDialog::~PreferencesDialog()
{
  delete _settings;
}

/** Saves the changes on this page */
bool
PreferencesDialog::save(QString &errmsg)
{
  Q_UNUSED(errmsg);
  QString languageCode =
    LanguageSupport::languageCode(ui.cmboLanguage->currentText());
  
  _settings->setLanguageCode(languageCode);
  _settings->setInterfaceStyle(ui.cmboStyle->currentText());
 
  /* Set to new style */
  Rshare::setStyle(ui.cmboStyle->currentText());
  return true;
}
  
/** Loads the settings for this page */
void
PreferencesDialog::load()
{
  int index = ui.cmboLanguage->findData(_settings->getLanguageCode());
  ui.cmboLanguage->setCurrentIndex(index);
  
  index = ui.cmboStyle->findData(Rshare::style().toLower());
  ui.cmboStyle->setCurrentIndex(index);
}

void PreferencesDialog::on_styleSheetCombo_activated(const QString &sheetName)
{
    loadStyleSheet(sheetName);
}

void PreferencesDialog::loadStyleSheet(const QString &sheetName)
{
    QFile file(":/qss/" + sheetName.toLower() + ".qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QLatin1String(file.readAll());

    
    qApp->setStyleSheet(styleSheet);
    
}

Code: Alles auswählen

#ifndef _PREFERENCESDIALOG_H
#define _PREFERENCESDIALOG_H
#include <QtGui>
#include <QFileDialog>
#include <QStyleFactory>
#include <QLineEdit>

#include <config/rsharesettings.h>
#include <lang/languagesupport.h>

#include "configpage.h"
#include "ui_PreferencesDialog.h"

class PreferencesDialog : public ConfigPage 
{
  Q_OBJECT

public:
  /** Default Constructor */
  PreferencesDialog(QWidget *parent = 0);
  /** Default Destructor */ 
  ~PreferencesDialog();
  /** Saves the changes on this page */
  bool save(QString &errmsg);
  /** Loads the settings for this page */
  void load();


private slots:

  void on_styleSheetCombo_activated(const QString &styleSheetName);

  
private:
  /** A VidaliaSettings object used for saving/loading settings */
  RshareSettings* _settings;
  
  void loadStyleSheet(const QString &sheetName);


  /** Qt Designer generated object */
  Ui::PreferencesDialog ui;
};

#endif