我创建了一个扩展JDialog的类,我有一些复选框和3个按钮:accept,cancel和select all.
当用户单击全选时,应检查每个复选框,如果再次单击,则应取消选中每个复选框.这工作正常,但我也希望按钮的文本在"全选"和"取消全选"之间切换.我在那里遇到了麻烦,所以当用户点击按钮并且文本更改为"取消全选"时,该按钮会消失.
我把课程简化为最简单的形式:
public class NodeSelectionCheckBoxJDialog extends JDialog {
public enum Options {ACEPT, CANCEL};
private Options selectedOption;
private JButton allButton;
private boolean allCheckBoxesSelected;
private JButton aceptButton;
public NodeSelectionCheckBoxJDialog(){
super(MainFrame.getInstance());
this.setTitle("Select nodes to apply");
this.setModal(true);
selectedOption = Options.CANCEL;
nodeCheckBoxesSet = new HashSet<NodeCheckBox>();
try {
initComponents();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private void initComponents() throws Exception {
this.getContentPane().add(createActionButtons(), BorderLayout.SOUTH);
}
private Component createActionButtons() {
JPanel buttonsPanel = new JPanel();
allCheckBoxesSelected = false; …Run Code Online (Sandbox Code Playgroud) 我有一个带插槽的X类,一个带信号的Y类。我正在建立来自类X的连接,并在类Y中创建了一个公共方法来发出来自类X的信号(我不确定此步骤是否必要)。
然后,如果我从类X调用该方法,则发出信号,并执行slot。但是,如果我从类Y发出信号,则插槽将永远不会执行,我也不明白为什么。
我也可以在Y班上建立联系吗?
此伪代码试图解释我想要什么:
class X : public QWidget {
Q_OBJECT
X(){
connect(Y::getInstance(), SIGNAL(updateSignal(int)), this, SLOT(updateStatus(int)));
Y::getInstance().emitSignal(someValue); // Works
}
public slots:
void updateStatus(int value);
}
class Y : public QObject {
Q_OBJECT
Y(){
}
public:
Y getInstance();
void emitSignal(int value) {
emit updateSignal(value);
}
signal:
void updateSignal(int value);
}
class Z : public Y {
Z(){
}
init(){
emitSignal(someValue); // Doesn't work
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道:我有一个包含一些数据的结构数组。如果我想擦除所有数据并将所有值保留在结构数组中作为默认值,是否可以使用 C++11 括号初始值设定项?
#include <iostream>
using namespace std;
typedef struct{
int i;
char a;
}mystruct;
int main()
{
mystruct structure[2];
structure{};
structure[0].i = 69;
cout << structure[0].i << endl; // Should print 69
structure{};
cout << structure[0].i << endl; //Should print 0
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:目前我的编译器说预期;{ 之前,所以它似乎无法识别大括号初始值设定项。
我试图将一些点保留到std :: vector中,并且出现错误我不明白:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Foo{
public:
std::string str;
int i;
Foo(){
this->str = "";
this->i = 0;
}
Foo(Foo ©Foo){
this->str = copyFoo.str; //Or get methods if private members
this->i = copyFoo.i;
}
Foo(std::string str, int i){
this->str = str;
this->i = i;
}
};
int main()
{
std::vector<Foo> fooVector;
fooVector.reserve(20); // Error
for(int i=0; i<20; i++){
fooVector[i] = Foo("Test", i); // Or should I use operator new?
// Or should …Run Code Online (Sandbox Code Playgroud) 我试图在C++ 11中制作像这样的基于范围的lopp:
std::vector<Satellite> Satellites; // Class member
//...
int number = 1;
for(auto sat : this->Satellites) {
sat.setNumber(number++);
}
Run Code Online (Sandbox Code Playgroud)
而且我收到了这个警告:
'auto'改变了C++ 11中的含义; 请删除它[-Wc ++ 0x-compat]
当然我可以坚持for(Satellite sat : this->Satellites),但我试图测试auto关键字.
我曾经读过使用C++ 11可以使用auto,但是最近我发现自从C++ 0x以来它已经改变了(或者看起来它已经改变了!):
关键字auto不是新的; 它实际上可以追溯到ANSI C之前的时代.但是,C++ 11改变了它的含义; auto不再指定具有自动存储类型的对象.相反,它声明了一个对象,其类型可以从其初始化器中推导出来.从C++ 11中删除了auto的旧含义以避免混淆.
那么:我能用这样的C++ 11和我的问题是在IDE(Eclipse CDT Juno),或者我应该以不同的方式使用它(或者根本不删除auto关键字)?
花了几分钟想知道为什么 Font Awesome 图标没有出现在我的应用程序中,但是在编写了这个超简单的小提琴之后,我发现即使代码很少,它们也根本没有出现。
我只是加载 CDN 并插入一个如下所示的图标:
<!-- Font awesome stylesheet -->
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<i class="fa fa-camera-retro fa-5x">This is a camera</i>
<i class="fa fa-icon-remove fa-2x" style="color: red;">This is an X</i>
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
我编写了代码,用于在单击按钮时显示模态,目的是在模态内编辑按钮的文本.
我的意图是有很多按钮,所以不是通过id获取它们,而是在调用模态时使用e.relatedTarget以便知道哪个按钮已调用并从按钮获取文本以便我可以在模态.
但是当我在模态下编辑文本并单击确定按钮时,问题就出现了.我不知道如何从那里访问e.relatedTarget.
HTML:
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Change this text</button>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="text-to-edit" class="control-label">Edit text:</label>
<input type="text" class="form-control" id="text-to-edit">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
$('#exampleModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // …Run Code Online (Sandbox Code Playgroud) 到目前为止,我正在尝试使用 Django 提供一个简单的文本文件,但没有成功。我认为我的 Django 代码没问题:
def status(request):
# Get data from database
parameters = get_parameters_from_database()
if request.method == "GET":
// Stuff here to render the view for a GET request
return render_to_response('myapp/status.html', {'page_name': 'status', 'parameters' : parameters})
elif request.method == "POST":
if request.POST['request_name'] == 'download_txt':
file_path = parameters['file_path']
with open(file_path, 'rb') as fsock:
response = HttpResponse()
response['content_type'] = 'text/plain'
response['Content-Disposition'] = 'attachment; filename=current.txt'
response.write(fsock.read())
print(response)
return response
Run Code Online (Sandbox Code Playgroud)
当收到 POST 请求时,它会在 webserver 控制台中打印以下内容,所以我认为没关系:
<HttpResponse status_code=200, "text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)
所以我认为问题在于我没有在 Jquery 的 Ajax …
我正在使用pyqt5开发GUI应用程序。在某个对话框中,我需要许多组件,作为QWebEngineView的组件之一,可以作为绘制数据的画布,即使创建对话框时图表尚未准备就绪,该组件也应占用大部分可用空间。
我调查并发现了拉伸因子。我看到QSizePolicy仅直接适用于小部件,而不适用于布局,如本SO答案所示。但是后来我看到方法addWidget和addLayout允许我在QBoxLayout的方向上设置拉伸因子,这对于我的意图来说似乎是理想的。
所以我尝试了:
from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout, QHBoxLayout
from strategy_table import StrategyTable
layout = QVBoxLayout()
layout.addWidget(QLabel("Strategy components"))
# Upper layout for a table. Using a 30% of vertical space
upper_layout = QHBoxLayout() # I'm using a HBox because I also want a small button at the right side of the table
self.table = StrategyTable(self) # Own class derived from QTableWidget
upper_layout.addWidget(self.table)
add_button = QPushButton('Add')
add_button.clicked.connect(self._show_add_dialog)
upper_layout.addWidget(add_button)
layout.addLayout(upper_layout, 3) # Setting 20% of size with the …Run Code Online (Sandbox Code Playgroud)