//Test.h
typedef struct {
char *dir;
char *name;
} TestStr;
class Test: public QWidget {
Q_OBJECT
public:
Test(QWidget* parent = 0);
private:
QList<TestStr> list;
QPushButton* button[10];
void init();
public slots:
void browse();
};
//Test.cpp
Test::Test(QWidget* parent) :
QWidget(parent) {
// TODO Auto-generated constructor stub
TestStr sp;
char name[] = "INPUT_File_Name";
sp.name = name;
char dir[] = "/root/Desktop";
sp.dir = dir;
TestStr sp1;
char name1[] = "OUTPUT_File_Name";
sp1.name = name1;
char dir1[] = "/root/Desktop";
sp1.dir = dir1;
list.append(sp);
list.append(sp1); //初始化这个list
init();
}
void Test::init() {
QHBoxLayout* layout = new QHBoxLayout;
int sum = list.size();
for (int i = 0; i < sum; i++) {
TestStr ts = list.at(i);
QString str = ts.name;
qDebug() << str;
button
= new QPushButton(str);
QString temp;
temp = QString::number(i, 10);
button->setAccessibleName(temp);
connect(button, SIGNAL(clicked()),this, SLOT(browse()));
layout->addWidget(button);
}
setLayout(layout); //运行后这个界面显示正确,list的里的东西也能读出来
}
void Test::browse() {
QPushButton* clickBtn = qobject_cast<QPushButton*> (sender());
QString str = clickBtn->accessibleName();
bool ok;
int i = str.toInt(&ok, 10);
QString dir = list.at(i).dir;
QString filePath = QFileDialog::getExistingDirectory(this, "test", dir);
//点击按钮后,弹出的文件选择中的默认路径不对,这里读到的list中的那个dir是乱码
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("ISO-8859-1"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO-8859-1"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("ISO-8859-1"));
Test test;
test.show();
return app.exec();
}
代码都在这了,麻烦高手帮忙看看 Test.cpp (2 K) 下载次数:3 Test.h (1 K) 下载次数:2 main.cpp (1 K) 下载次数:3 [ 此帖被溟阡在2009-03-04 14:36重新编辑 ]