[ FantasticFour @ 13.10.2010. 15:41 ] @
radim u qt-creator-u

evo ovako
na QMainWindow imam
1 QPushButton
2 QLineEdit
3 QListWidget
i sad na QListWdget imam 3 iten-a
kako da se kad kliknem na pushbutton u lineedit ispise teks od tog iten-a
npr
izaberem Marko
kliknem na pushbutton i u lineedit-u ispise Marko

molim pomagajte ovo mi je jako hitno
[ BinaryRuler @ 13.10.2010. 21:28 ] @
Jedan od nacina je da uhvatis signal currentItemChanged (QListWidgetItem* current, QListWidgetItem* previous) QListWidget-a i da ga pocezes na neki tvoj slot.
Unutar slota kazes da lineEdit preuzme ime od current item-a.

Ako ti treba detaljno javi, sada nisam imao vremena da ti ispisem sve samo sam ti rekao princip.
[ Nedeljko @ 13.10.2010. 21:43 ] @
Code:
QList<QListWidgetItem*> selected = listWidget->selectedItems();
QString text;

if (selected.empty() == false) {
    text = (*(selected.begin()))->text();
}

lineEdit->setText(text);
[ Nedeljko @ 13.10.2010. 22:10 ] @
Možda si pak mislio na ovo

Code:
QListWidgetItem *current = listWidget->currentItem();
QString text;

if (current != 0) {
    text = current->text();
}

lineEdit->setText(text);


U oba slučaja, priloženi kod smeštaš u metodu u kojoj se obrađuje pritisak na dugme.
[ FantasticFour @ 14.10.2010. 05:24 ] @
hvala puno
[ FantasticFour @ 14.10.2010. 05:38 ] @
a ali sad nece opet
Code:

void MainWindow::on_pushButton_clicked()
{
    QListWidgetItem item = ui->accessories->currentItem();
    QString current;
    current = item.text();
    ui->lineEdit->setText(current);
}


ispise gresku
error: conversion from ‘QModelIndex’ to non-scalar type ‘QListWidgetItem’ requested
[ Nedeljko @ 14.10.2010. 16:28 ] @
Metoda currentItem() vraća pokazivač na QListWidgetItem, jer se može desiti da nema tekućeg elementa (na primer, lista je prazna), kada vraća 0. Tu ti je greška. Dakle,

Code:
void MainWindow::on_pushButton_clicked() {
    QListWidgetItem *item = ui->accessories->currentItem();
    QString current;

    if (item) {
        current = item->text();
    }

    ui->lineEdit->setText(current);
}
[ FantasticFour @ 15.10.2010. 14:43 ] @
ok samo jos jedno pitanje
Code:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QTextStream>
#include <QFile>
#include <QListWidgetItem>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

class dash
{
public:
    QString selectedApp(int currentRow)
    {
        QFile currentrow("current-row.cr");
        currentrow.open(QIODevice::ReadWrite | QIODevice::Text);
        QTextStream writer(&currentrow);
        writer << currentRow;
        QString currentAppNumber;
        QString currentAppNumberIndex;
        writer >> currentAppNumberIndex;
        currentAppNumber = "grep " + currentAppNumberIndex + " apps.list > currentapp.list";
        currentrow.close();
        QFile command("command.sh");
        command.open(QIODevice::ReadWrite | QIODevice::Text);
        QTextStream commander(&command);
        commander << currentAppNumber;
        system("sh command.sh");
        command.close();
        QFile currentAppName("currentapp.list");
        currentAppName.open(QIODevice::ReadOnly | QIODevice::Text);
        QTextStream reader(&currentAppName);
        QString appName;
        reader >> appName;
        currentAppName.close();
        return (appName);
    }
};

void MainWindow::on_pushButton_clicked()
{
    dash software;
    ui->lineEdit->setText(software.selectedApp(ui->accessories->currentRow()));
}



apps.list sadrzi (samo za probu jedan red a inace treba oko 20)

avant-window-navigator 0

ali kad kliknem na pushbutton i lineedit-u se ne ispise avant-window-navigator (a treba kao sto vidis u kodu)
primetio sam da u command.sh posle grep ne ispise 0 a trebalo bi pa tek onda apps.li...

MOLIM POMOC
hvala unapred
[ Nedeljko @ 15.10.2010. 16:11 ] @
Naredbom

Code:
commander << currentAppNumber;


se u principu ne upisuje sadržaj u datoteku, već u bafer, prilikom čijeg pražnjenja sadržaj zaista ide u datoteku. Ti si izvršio naredbu

Code:
system("sh command.sh");


dok je datoteka command.sh bila prazna, pa zato i nisi dobio rezultat. Treba pre te naredbe da osiguraš pražnje nje bafera, na primer zatvaranjem fajla. Dakle, premesti naredbu za zatvaranje fajla command.sh jedan red iznad, odnosno pre poziva system funkcije.

No, ovo si mogao da rešiš i elegantnije. Prvo, ne treba ti poziv sh da bi pozvao grep, već si njega mogao da zoveš i direktno. Drugo, pokretanje ljuske ti uopšte nije potrebno. Prouči klasu QProcess. To je ono što ti treba.