Jump to content

Signāli un sloti iekš Qt.


tintix
 Share

Recommended Posts

Kursadarbam rakstu progu Qt freimvorkā SAMBA's failu šeringa pārvaldīšanai. Qt esmu iesācējs, un dažas lietas īsti nesaprotu. Objektus (pogas u.t.t.) mēs savienojam ar to attiecīgiem signāliem. Piemeram, iekš share.cpp (skat. zemāk), pushButton_2 savienojam ar signalu clicked() - to nospiežot, tiek izpildīta attiecīgā slota funkcija getPath(). Jautajums - vai ar signalu/slotu palīdzību ir iespējams palaist kādu funkciju smb_conf(), ielādējoties dialogam (formai)? Piemēram, ka iekš Delphi OnActivate. Vai Qt arī tā var? Kādu tieši objektu ar kādu signālu savienot?

 

 

Tas ir mans main.cpp

#include <QApplication>
#include "share.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
share *dialog = new share;

dialog->show();
return app.exec();
}

 

share.cpp

#include <QtGui> 
#include "share.h"

share::share(QDialog *parent)
{
setupUi(this); //Palaiž GUI	
//Savienoju slotus ar signaliem u.t.t. Pats nesaprotu, bet čoms saka ka strādās. :)
connect( pushButton_2, SIGNAL( clicked() ), this, SLOT( getPath() ) );

}


void share::getPath() {
QString path;

path = QFileDialog::getExistingDirectory(
	this,
	"Izvēlies mapi, lai atvērtu!",
QDir::currentPath()
);
lineEdit_3->setText( path );

}


void share::smb_conf () {
int unsigned i = 0, linecounter = 0;

		  QString tx;
QString name[30];
QString path[30];
QString comment[30];
QString writeable[30];
QString read_only[30];


QFile fa ("/home/tintix/Desktop/smb.conf");


	if (fa.open(QIODevice::ReadOnly | QIODevice::Text)) {
	while (!fa.atEnd()) {
		linecounter++;
		tx = fa.readLine();

			  un tā tālāk...

 

share.h

#ifndef SHARE_H
#define SHARE_H

#include "ui_share.h"


class share : public QDialog, private Ui::dialogs
{
Q_OBJECT

public:
share(QDialog *parent = 0);

public slots:
void getPath(); //Izveidoju slotus, pa kuriem sūtīšu paveles (signālus) objektiem! :)
void smb_f();
};

#endif

Labots - tintix
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...