更新:此行似乎生成错误:*line = color;
我收到以下错误,但我不明白它可以来自哪里:
错误:
HEAP [testQt.exe]:0B444FE8处的堆块修改为0B44C6B0,请求大小为76c0
生成它的行:
return QPixmap::fromImage(qimage);
Run Code Online (Sandbox Code Playgroud)
从:
QPixmap Interpolation::getData() {
QPointF pt(0, 0);
QRgb color;
QImage qimage(m_width, m_height, QImage::Format_ARGB32);
qimage.fill(Qt::transparent);
for (int i(0); i < m_height; ++i) {
m_progress->setValue(m_width+i);
QRgb *line = (QRgb *)qimage.scanLine(i);
for (int j(0); j < m_width; ++j) {
pt.setX(j);
pt.setY(i);
line += 1;
if (isInHull(pt)) {
color = colorScale(interp(&pt));
*line = color; //If I remove this part the program won't crash
}
}
}
return QPixmap::fromImage(qimage);
}
Run Code Online (Sandbox Code Playgroud)
如果它有帮助:
QRgb Interpolation::colorScale(qreal value) …Run Code Online (Sandbox Code Playgroud) 我正在研究我的第一个Qt应用程序,小部件,当我尝试用一<int, QString>对填充标准库映射时,我得到了一个段错误.我的目标是用int键和QString值填充地图.我不知道对是否是最好的方法,所以任何建议都会很棒.
这是除main之外唯一的源文件.
#include "linuxtips.h"
#include "ui_linuxtips.h"
LinuxTips::LinuxTips(QWidget *parent) :
QWidget(parent),
ui(new Ui::LinuxTips)
{
loadRandTip();
ui->setupUi(this);
}
LinuxTips::~LinuxTips()
{
delete ui;
}
void LinuxTips::on_learnMore_clicked()
{
}
void LinuxTips::on_viewAll_clicked()
{
}
void LinuxTips::loadRandTip()
{
int i = 0;
std::map<int, QString>::iterator it;
QString line;
QFile inputFile(":/tipFile.txt");
inputFile.open(QIODevice::ReadOnly);
QTextStream in(&inputFile);
do{
line = in.readLine();
// this->TipMap.insert(it, std::pair<int, QString >(i,line));
i++;
}while(!in.atEnd());
}
Run Code Online (Sandbox Code Playgroud)
如果我取消注释this->TipMap.insert(it, std::pair<int, QString >(i,line));,它将运行.由于它是一个seg错误,我确定它是一个内存溢出或空指针,但我只是不确定它是什么.谢谢你的帮助.
我有128个项目的结构向量.我应该将前64个项目放在第一个QTableWidget中,剩余的64个项目放到第二个QTableWidget中.必须在我的结构向量中显示"索引"数字.那些是Id号码.我使用UI设计器设计了我的ui,我尝试在那里更改QTableWidget第一行号,但它没有用.如何初始化索引以0开头的第一个tablewidget以及索引从64开始的第二个tablewidget.请帮助guyz ...在此先感谢.
我将使用快照图像清楚地解释它.!这里我有2个QTableWidgets.每个表窗口小部件的行ID都为1.第二个小部件的行ID 不应该与1.相反,它必须是65.(因为我有128个项目,前64个项目进入第一个表格,其余64个项目应放在第二个表格中).希望大家都明白我的要求.请帮我.
我创建了简单的代码片段,以显示我注意到的奇怪行为.而已:
#include <QCoreApplication>
#include <QLineEdit>
class MyObject : public QWidget
{
public:
explicit MyObject(QWidget *parent = 0) : QWidget(parent) {
editor = new QLineEdit(this);
}
void setValue(const QString &s) const {
editor->setText(s);
editor->setReadOnly(true);
editor->setMaxLength(s.length());
}
private:
QLineEdit *editor;
};
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
MyObject::setValue函数有const说明符,但这段代码编译得很好.需要注意的是setText,setReadOnly和setMaxLength功能都没有const:
void setText(const QString &);
void setReadOnly(bool);
void setMaxLength(int);
Run Code Online (Sandbox Code Playgroud)
我只是想知道导致这种行为的原因是什么?我使用Qt 4.7.4和MingGW 4.6.2.
我正在使用Qt4和Qt Creator.我无法将自定义插槽写入UI中的进度条.如何为ui文件中的特定小部件编写自定义插槽?在我的场景中,信号不是来自ui元素.
以下代码在运行时产生错误:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QFile>
#include<QFileInfo>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btcopy_clicked();
void on_btquit_clicked();
void ChangeValue(qint64 val);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btcopy_clicked()
{
QFileInfo *qfi=new QFileInfo("C:\\Users\\kiran\\Desktop\\test\\a.iso");
qDebug("%d" ,qfi->size());
QFile *qf=new QFile();
QFile fromFile("C:\\Users\\kiran\\Desktop\\test\\a.iso"); …Run Code Online (Sandbox Code Playgroud) 我把这段代码写成函数,每次调用这个函数,我都要写入文件.但是这个函数只写一次到文件.每当我从windows打开文件时我发现只写了一个字文件.每次打电话时如何连续写入文件?
/* Try and open a file for output */
QString outputFilename = "Results.txt";
QFile outputFile(outputFilename);
outputFile.open(QIODevice::WriteOnly);
/* Check it opened OK */
if(!outputFile.isOpen()){
qDebug() <<"- Error, unable to open" << outputFilename << "for output";
return ;
}
/* Point a QTextStream object at the file */
QTextStream outStream(&outputFile);
/* Write the line to the file */
outStream <<"\n"<< szTemp;//"Victory!\n";
/* Close the file */
outputFile.close();
Run Code Online (Sandbox Code Playgroud) 而不是做这样的事情:( proxyModel是一个QSortFilterProxyModel)
proxyModel->setFilterRegExp(".*");
有没有正确的方法来清除过滤器?因为那对我来说不对劲.
我想知道的是如何在Dev-C++中导入Qt库,因此它将提供与QT Creator 2.7.0相同的功能.我知道如何在Dev-C++编译器选项中添加'include'和'libraries'文件夹.
但问题是:我从哪里获取这些库,以便Dev-C++可以提供与Qt Creator 2.7.0完全相同的功能?
有任何想法吗?
我正在尝试从另一个类更改类Label的文本.我有类MainWindow,它包含Label.
我也有一个Bot类,我想从中改变label的值.
我正在尝试创建信号和插槽,但我不知道从哪里开始.
我创建了信号和插槽,如下所示:
//in mainwindow.h
signals:
void changeTextSignal();
private slots:
void changeText();
//in mainwindow.cpp
void MainWindow::changeText(){
this->label->setText("FooBar");
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何连接信号以便能够从另一个类中更改Label的文本.
我已经使用setCellWidget 将许多 QComboBox插入到QTableWidget中(我不知道qcombobox的数量,因为它来自MySQL)。但是当我想从表中获取其文本时
self.table.item(0,1).itemText()
Run Code Online (Sandbox Code Playgroud)
要么
self.table.item(0,1).text()
Run Code Online (Sandbox Code Playgroud)
要么
self.table.item(0,1).currentText()
Run Code Online (Sandbox Code Playgroud)
它不起作用。通常,我可以使用来获取文本,combobox.currentText()但是表具有许多组合框,而且我不知道行和列(x,y)的信息。所以我应该使用类似.item(14,1).text()的东西