Qt Gui aus anderer Klasse verändern
-
Hallo
ich versuche schon seit einer weile eine Progressbar aus einer anderen Klasse zu verändern, doch das klappt nicht so wie es soll. Ich hoffe einer von euch kann mir ein Bsp. oder ein paar Denkanstöße geben.LG
-
Hat keiner eine antwort?
#Push
-
QT Problem schrieb:
doch das klappt nicht so wie es soll.
-
Die 'andere' Klasse sollte eine Referenz/QPointer auf den ProgressBar bekommen, dann kann sie ihn ansprechen.
-
Ich möchte aus diese Klasse auf das ui zugreifen:
[code="cpp"]#ifndef DOWNLOADCALLBACK_H
#define DOWNLOADCALLBACK_H
#include "mainwindow.h"class DownloadCallback : public IBindStatusCallback
{
public:
DownloadCallback(){}~DownloadCallback(){}
// This one is called by URLDownloadToFile
STDMETHOD(OnProgress)(/* [in] / ULONG ulProgress, / [in] / ULONG ulProgressMax, / [in] / ULONG ulStatusCode, / [in] */ LPCWSTR wszStatusText)
{
Hier möchte ich auf die Progressbar zugreifen
}
return S_OK;
}// The rest don't do anything...
STDMETHOD(OnStartBinding)(/* [in] / DWORD dwReserved, / [in] */ IBinding __RPC_FAR *pib)
{
return E_NOTIMPL;
}STDMETHOD(GetPriority)(/* [out] */ LONG __RPC_FAR *pnPriority)
{
return E_NOTIMPL;
}STDMETHOD(OnLowResource)(/* [in] */ DWORD reserved)
{
return E_NOTIMPL;
}STDMETHOD(OnStopBinding)(/* [in] / HRESULT hresult, / [unique][in] */ LPCWSTR szError)
{
return E_NOTIMPL;
}STDMETHOD(GetBindInfo)(/* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo)
{
return E_NOTIMPL;
}STDMETHOD(OnDataAvailable)(/* [in] / DWORD grfBSCF, / [in] / DWORD dwSize, / [in] */ FORMATETC __RPC_FAR *pformatetc, /* [in] */ STGMEDIUM __RPC_FAR *pstgmed)
{
return E_NOTIMPL;
}STDMETHOD(OnObjectAvailable)(/* [in] / REFIID riid, / [iid_is][in] */ IUnknown __RPC_FAR *punk)
{
return E_NOTIMPL;
}// IUnknown stuff
STDMETHOD_(ULONG, AddRef)()
{
return 0;
}STDMETHOD_(ULONG, Release)()
{
return 0;
}STDMETHOD(QueryInterface)(/* [in] / REFIID riid, / [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{
return E_NOTIMPL;
}
};#endif // DOWNLOADCALLBACK_H
[/code]
Habe schon über verschiedenen Varianten versucht "MainWindow w" & w.ui->Progressbar..." es gab keinen Fehler in QT doch beim ausführen passierte nichts am GUI. Könnte mir jemand dazu ein Beispiel zeigen
LG und Danke für die Antworten
-
Beim Code hat was nicht geklappt hier nochmal:
#ifndef DOWNLOADCALLBACK_H #define DOWNLOADCALLBACK_H #include "mainwindow.h" class DownloadCallback : public IBindStatusCallback { public: DownloadCallback(){} ~DownloadCallback(){} // This one is called by URLDownloadToFile STDMETHOD(OnProgress)(/* [in] */ ULONG ulProgress, /* [in] */ ULONG ulProgressMax, /* [in] */ ULONG ulStatusCode, /* [in] */ LPCWSTR wszStatusText) { //Hier möchte ich das ui aus der MainWindow Klasse verändern return S_OK; } // The rest don't do anything... STDMETHOD(OnStartBinding)(/* [in] */ DWORD dwReserved, /* [in] */ IBinding __RPC_FAR *pib) { return E_NOTIMPL; } STDMETHOD(GetPriority)(/* [out] */ LONG __RPC_FAR *pnPriority) { return E_NOTIMPL; } STDMETHOD(OnLowResource)(/* [in] */ DWORD reserved) { return E_NOTIMPL; } STDMETHOD(OnStopBinding)(/* [in] */ HRESULT hresult, /* [unique][in] */ LPCWSTR szError) { return E_NOTIMPL; } STDMETHOD(GetBindInfo)(/* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo) { return E_NOTIMPL; } STDMETHOD(OnDataAvailable)(/* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC __RPC_FAR *pformatetc, /* [in] */ STGMEDIUM __RPC_FAR *pstgmed) { return E_NOTIMPL; } STDMETHOD(OnObjectAvailable)(/* [in] */ REFIID riid, /* [iid_is][in] */ IUnknown __RPC_FAR *punk) { return E_NOTIMPL; } // IUnknown stuff STDMETHOD_(ULONG, AddRef)() { return 0; } STDMETHOD_(ULONG, Release)() { return 0; } STDMETHOD(QueryInterface)(/* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) { return E_NOTIMPL; } }; #endif // DOWNLOADCALLBACK_H
-
http://doc.qt.digia.com/qt-maemo/network-downloadmanager.html
vielleicht ist das was für dich.
Du kannst Signale zum mainframe senden um die Progressbar zu aktualisieren.
Es gibt mehrere Weg um das zu realisieren.
-
Danke dafür, aber ich würde es trotzdem gerne wissen wie das funktioniert. Kannst du mir ein Beispiel machen?
-
Sillo schrieb:
http://doc.qt.digia.com/qt-maemo/network-downloadmanager.html
vielleicht ist das was für dich.
Du kannst Signale zum mainframe senden um die Progressbar zu aktualisieren.
Es gibt mehrere Weg um das zu realisieren.Kannst du hier ein Beispiel Posten?
-
Könntest du erstmal dein Problem erklären?
Die Klasse die du gepostet hast hat nix mit Qt zu tun, ist irgendwas mit WinAPI und ist sicher nicht sehr hilfreich in der Verwendung mit Qt.Wie ich schon sagte, du musst auf die Instanz des Progressbars über einen Pointer/Referenz in der zweiten Klasse zugreifen. Alles was du brauchst ist also ein Pointer als Membervariable, und eine Settermethode...
-
Die Klasse brauche ich für den Callback von URLDownloadToFile. Ich aber auch keine anderen Befehle aus der MainWindow ausgeführt. In QT kommt kein Error und im GUI passiert nix.